Laravel 5 Auth中间件在csrf发布请求后工作


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请求进行重定向。

app/Http/Kernel.php中,有web中间件的声明。相应地更改订单,或者您可以暂时禁用它来调试代码

web中间件组包括VerifyCsrfToken::class以防止CSRF注入POST请求。如果在表单中的POST请求期间包含csrf_token,则应解决表单不匹配错误。

<input type="hidden" name="_token" value="{!! csrf_token() !!}">

我从你的问题中了解到,问题是当你发送POST表单时。因此,在laravel POST表单中需要令牌安全性。把这个写在你的申请表里,例如

<form method="POST">
     <input type="hidden" name="_token" value="{!! csrf_token() !!}">
     blah blah blah ...
   </form>

之后尝试发送请求,会正常工作