在 laravel 5.5 的验证 csrf 令牌中没有收到错误令牌不匹配异常
Posted
技术标签:
【中文标题】在 laravel 5.5 的验证 csrf 令牌中没有收到错误令牌不匹配异常【英文标题】:not getting the error Token mismatch exception in Verify csrf token in laravel 5.5 【发布时间】:2018-02-20 13:11:35 【问题描述】:我是 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());
【问题讨论】:
@ShaunakShukla 感谢您的编辑 尝试其他浏览器? ***.com/questions/45994235/… @Don'tPanic 我尝试了 chrome 和 firfox 我得到了相同的响应 【参考方案1】:正如@Shaz 在https://es.***.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">
【讨论】:
我不懂上面链接的语言【参考方案2】:似乎是 laravel 内部的一个问题。它显示不正确的消息。有一些类似的帖子:1stlink,2ndlink
你应该把你的 csrfField 放在那里,问题就会消失。 关于 laravel 错误的附加链接:
Larave 5.5: default error views and costomizing them
Laravel 5.5: set error details via debug
option
【讨论】:
感谢您的回答我认为这是 Laravel 5.5 中的新错误页面重定向以上是关于在 laravel 5.5 的验证 csrf 令牌中没有收到错误令牌不匹配异常的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.1/AngularJS:在 Angular 视图中重置密码(如何验证 CSRF 令牌?)
api 端点未在 Sanctum 上进行 CSRF 令牌验证 - CSRF 令牌不匹配