Php VerifyCSRFToken中的TokenMissmatchException

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="{{

我有一个问题,似乎是再次发生在拉威尔,但我不能解决它。当尝试使用我的表单登录时,我遇到了异常

VerifyCsrfToken.php第67行中的令牌失配异常:

我的代币是

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'
        ]
    );
});