0

我是 Laravel 的新手,我正在使用 Laravel 5.5。
当我提交时没有{{ csrf_field() }} 在验证 csrf 令牌中收到错误令牌不匹配异常

错误是

由于不活动,该页面已过期。请刷新并重试

我的 HTML 表单是

<form method="POST" action="/post">

    <div class="form-group">
        <label for="title">Title</label>
        <input type="text" class="form-control" name="title">

    </div>

    <div class="form-group">
        <label for="textblog">Body</label>
        <input type="textarea" class="form-control" name="body">
    </div>

    <button type="submit" class="btn btn-primary">Publish</button>
</form>

我的路线网络文件

Route::post('/post','PostsController@store');

这是我的控制器类函数

public function store() {
    dd(request()->all());
}
4

2 回答 2

0

在 laravel 中似乎有问题。它显示不正确的消息。有一些类似的帖子:1stlink2ndlink

你应该把你的 csrfField 放在那里,问题就会消失。有关 laravel 错误的其他链接:

Larave 5.5:默认错误视图和自定义它们

Laravel 5.5:通过debug选项设置错误详细信息

于 2017-09-12T09:43:56.783 回答
0

正如@Shaz 在https://es.stackoverflow.com/questions/99342/laravel-5-5-the-page-has-expired-due-to-inactivity-please-refresh-and-try-aga中所说

在 Laravel 5.5 中,“TokenMismatch”抛出异常,代码为 419

更新:.. 错误页面显示“页面因不活动而过期。请刷新并重试”

我建议安装https://github.com/barryvdh/laravel-debugbar 以便您查看异常。

你可能会看到 ../vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php#70

 return $this->addCookieToResponse($request, $next($request));
    }

    throw new TokenMismatchException;
}

更新:

当我在没有 {{ csrf_field() }} 的情况下提交时,在验证 csrf 令牌中没有收到错误令牌不匹配异常

您收到了不匹配异常,但出现了新的错误页面和代码。(https://laravel-news.com/laravel-5-5-error-views

{{ csrf_field() }} 创建了一个隐藏在令牌中的输入,因此您必须在表单中使用它(还要检查表单中的令牌是否为空)

<input type="hidden" name="_token" value="nReVYpjfvqiVVkE8LpGeNOdJZnskNLGoB57YHFkO">
于 2017-09-20T23:06:39.827 回答