【发布时间】:2018-06-13 13:16:49
【问题描述】:
我使用的是 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 的默认代码,那么还有其他方法可以解决这个问题吗?
【问题讨论】:
-
有人知道吗???
-
当您清除浏览器缓存时,为 csrf 令牌生成的 cookie 也会被破坏,这就是它显示错误的原因。在这种情况下,您必须刷新页面以便再次生成 csrf 令牌。
-
是的,你完全明白我的意思,但有没有其他选项不刷新我们可以解决这个?正如我之前所说,上面的代码工作正常,但我不希望对默认 laravel 结构进行任何更改..
-
首先让我知道确切的要求?
-
@Mayank Pandeyz 浏览器清除后我无法直接登录它显示令牌不匹配错误但刷新页面后一切正常
标签: laravel laravel-5 laravel-5.2 laravel-5.4