我有一组需要受Auth中间件保护的路由。我使用标准的Auth过滤器。
Route::group(['middleware' => 'auth'], function () {
Route::get('....', '....');
Route::post('....', '....');
...
它可以正常使用GET请求,但是当我执行POST请求时,我看到Token Mismatch Exception。我认为,CSRF中间件在Auth之前工作。如何更改这些过滤器的顺序?我需要看到未经授权的异常才能从ajax-requests进行重定向。
答案 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() !!}">