繁体   English   中英

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

我从您的问题中得到的问题是当您发送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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM