缓存清除后{Laravel令牌不匹配错误

时间:2018-06-12 10:10:23

标签: laravel laravel-5 laravel-5.2 laravel-5.4

我正在使用Laravel 5.4版本

当我清楚浏览器缓存并尝试登录时,我会问我的错误,如

TokenMismatchException in VerifyCsrfToken.php line 68:

但是当我再次刷新并登录时它已成功登录但是每当我清除浏览器缓存并尝试一直登录时它会返回错误信息。任何人都可以帮我解决这个问题吗?

我在v\VerifyCsrfToken.php中的代码是:

public function handle($request, Closure $next)
{
    if (
        $this->isReading($request) ||
        $this->runningUnitTests() ||
        $this->shouldPassThrough($request) ||
        $this->tokensMatch($request)
    ) {
        return $this->addCookieToResponse($request, $next($request));
    }

    throw new TokenMismatchException;
}

但是当我使用此代码而不是laravel默认值时:

public function handle($request, Closure $next)
{
    $response = $next($request);

    if (last(explode('\\',get_class($response))) != 'RedirectResponse') {
        $response->header('P3P', 'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
    }

    return $response; 
}

它正常工作意味着在缓存清除之后它允许我登录而不会出现令牌不匹配错误。

我的问题是我不想更改laravel的默认代码,那么还有其他方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

在app / Http / Middleware / VerifyCsrfToken.php中,

class VerifyCsrfToken extends Middleware
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        //
    ];
}

将logout添加到此数组中:

    protected $except = [
    '/logout'
];

希望这可以解决令牌不匹配异常。感谢。