Php VerifyCSRFToken中的TokenMissmatchException
我有一个问题,似乎是再次发生在拉威尔,但我不能解决它。当尝试使用我的表单登录时,我遇到了异常 VerifyCsrfToken.php第67行中的令牌失配异常: 我的代币是Php VerifyCSRFToken中的TokenMissmatchException,php,laravel,laravel-5.2,csrf,Php,Laravel,Laravel 5.2,Csrf,我有一个问题,似乎是再次发生在拉威尔,但我不能解决它。当尝试使用我的表单登录时,我遇到了异常 VerifyCsrfToken.php第67行中的令牌失配异常: 我的代币是 57APQblkHvu9zZAMEdLYqQ1EwhPgZZtv4xEAYqmG//请求 byHXGzrMeMQGPtIBWo6FCgdKyXl2GkiekQk8IEND//Session 但为什么它们不同呢?我的登录表单如下所示,是视图中唯一的HTML代码 <form method="post" action="{{
57APQblkHvu9zZAMEdLYqQ1EwhPgZZtv4xEAYqmG//请求
byHXGzrMeMQGPtIBWo6FCgdKyXl2GkiekQk8IEND//Session
但为什么它们不同呢?我的登录表单如下所示,是视图中唯一的HTML代码
<form method="post" action="{{ route('login.do') }}">
<input type="submit" value="Login with Spotify">
{{ csrf_field() }}
</form>
但是,只要我在login.blade.php
(获取请求),然后按submit登录,我就会收到上述异常。您需要将“Route::post('/login',…”放在['middleware'=>['guest']]中,而不是放在['middleware'=>['web']]
将所有“登录前活动”保留在['middleware'=>['web']]组之外,因为['middleware'=>['web']]执行会话、Cookie和csrf等。用户登录到您的laravel web app后需要处理的内容。VerifyCsrfToken.php第67行中“TokenMismatchException”的原因可能非常复杂。需要了解所涉及的中间件。下图显示了重要的细节 每个请求都会遍历StartSession和VerifyXsrfToken层。这两个层分别管理名为“laravel_session”和“XSRF_token”的cookie。按此顺序检查它们,这两个都是至关重要的。如果其中一个cookie未通过验证,则抛出“TokenMismatchException”。
更多详细信息,请参见您使用的会话驱动程序是什么?我正在使用
文件
进行会话和缓存。我甚至使用rm-f storage/framework/sessions/*
删除了会话缓存。您是否在呈现的html中看到了\u token
字段?您是否也可以发布此内容?请检查视图中的csrf token:并且,确保y你用一个key:php artisan key:generate解决了.env文件。我在HTML中看到了令牌。它是来自请求的令牌。我还用generateare设置了一个key。你是否将所有路由都保留在“web”组之外?:/I我只有三条路由,它们现在都在guest
组中。现在,你可以对App/Http/Kernel.php文件夹中的“\App\Http\Middleware\VerifyCsrfToken::class”将在一段时间内为您提供解决方案
<?php
Route::group(['middleware' => ['web']], function () {
Route::get(
'/',
[
'as' => 'start',
'uses' => 'HomeController@index'
]
);
Route::get(
'/login',
[
'as' => 'login.show',
'uses' => 'AuthenticationController@login'
]
);
Route::post(
'/login',
[
'as' => 'login.do',
'uses' => 'AuthenticationController@doLogin'
]
);
});