我有一组路由,需要通过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>
之后尝试发送请求,会正常工作