我是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');
这是我的Controller类函数
public function store() {
dd(request()->all());
}
答案 0 :(得分:0)
在laravel里面似乎是一个问题。它显示不正确的消息。有一些类似的帖子:1stlink,2ndlink
你应该把你的csrfField放在那里,问题就会消失。 关于laravel错误的其他链接:
答案 1 :(得分:0)
在Laravel 5.5中,“TokenMismatch”会抛出代码为419的异常
更新:..以及一个错误页面,其中包含“由于不活动而导致页面已过期。请刷新并重试”
我建议安装https://github.com/barryvdh/laravel-debugbar 所以你可以看到例外。
你可能会看到 ../供应商/ laravel /框架/ SRC /照亮/粉底/ HTTP /中间件/ 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">