[英]Laravel 5 Auth middleware works after csrf in post requests
我有一组路由,需要通过Auth中间件进行保护。 我使用标准的Auth过滤器。
Route::group(['middleware' => 'auth'], function () {
Route::get('....', '....');
Route::post('....', '....');
...
它可以很好地处理GET请求,但是当我执行POST请求时,我会看到令牌不匹配异常。 我认为,CSRF中间件在Auth之前有效。 如何更改这些过滤器的顺序? 我需要查看未经授权的异常才能从ajax请求进行重定向。
我从您的问题中得到的问题是当您发送POST表格时。 因此,以laravel帖子形式需要令牌安全性。 例如,在您的申请表中写上这个
<form method="POST">
<input type="hidden" name="_token" value="{!! csrf_token() !!}">
blah blah blah ...
</form>
在此之后尝试发送请求,将正常工作
在app/Http/Kernel.php
,有Web中间件的声明。 相应地更改顺序,也可以暂时禁用它以调试代码
Web中间件组包含VerifyCsrfToken::class
以防止CSRF注入到POST请求中。 如果在POST请求期间以表格形式包含csrf_token,则应解决表格不匹配错误。
<input type="hidden" name="_token" value="{!! csrf_token() !!}">
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.