none
有一个默认回退到
strict
,并且
lax
将是安全性的最佳选择)看法)。所以我就保持这种状态,同时也认为这个 bug 是多年前就被承认的,肯定还有其他原因。
file
会话驱动程序,并检查了权限 - 这些都是有序的,但 419 仍然发生。
file
会话驱动程序切换到
database
驱动程序,运行迁移并看到会话填充数据库。然而问题依然存在。
Laravel 8.75
。如果可能的话,我很乐意提供赏金来解决这个问题。谢谢。
handle
app/Http/Middleware/VerifyCsrfToken.php
方法
public function handle($request, Closure $next)
{
try {
return parent::handle($request, $next);
} catch (TokenMismatchException $e) {
Log::error('CSRF exception', [
'session' => $request->session()->all(),
'cookie' => $request->cookie(),
'session_token' => $request->session()->token(),
'request_token' => $this->getTokenFromRequest($request),
'request_ip' => $request->ip(),
'request_path' => $request->path(),
'user_agent' => $request->userAgent(),
// any other data you need
]);
throw $e;
}
}
鉴于您已经尝试了类似问题的所有解决方案,我可以假设用户只是不关闭带有表单的选项卡。会话过期,他们下次尝试登录时会收到此错误。如果是这种情况 - 我可以建议将此 html 标签添加到此页面(在头部部分)
<meta http-equiv="refresh" content="3600">
content
属性指定页面强制刷新的秒数。从您的配置中指定会话的生命周期
`Laravel 中出现 Session Expired 或 419 Page Expired 错误消息是因为你的 csrf 令牌验证失败,这意味着 App\Http\Middleware\VerifyCsrfToken::class 中间件已经打开。在表单中已经添加了 @csrfblade 指令,这也应该没问题。
然后另一个要检查的区域是会话。 csrf 令牌验证直接涉及您的会话,因此您可能需要检查您的会话驱动程序是否正常工作,例如配置不正确的 Redis 可能会导致问题。` ref : "https://stackoverflow.com/questions /52583886/post-request-in-laravel-error-419-sorry-your-session-419-your-page-has-exp"