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

时间:2016-04-06 22:32:29

标签: php laravel laravel-5

我有一组需要受Auth中间件保护的路由。我使用标准的Auth过滤器。

Route::group(['middleware' => 'auth'], function () {
    Route::get('....', '....');
    Route::post('....', '....');
    ...

它可以正常使用GET请求,但是当我执行POST请求时,我看到Token Mismatch Exception。我认为,CSRF中间件在Auth之前工作。如何更改这些过滤器的顺序?我需要看到未经授权的异常才能从ajax-requests进行重定向。

2 个答案:

答案 0 :(得分:0)

当您发送POST表格时,我从您的问题中得到的问题是什么。因此,在laravel post表单中需要令牌安全性。 在请求表单中写下这个例如

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

之后尝试发送请求并且可以正常工作

答案 1 :(得分:0)

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

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

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