【发布时间】:2021-09-07 06:00:00
【问题描述】:
我在登录时遇到了 Laravel 会话问题。
1.是的,我的表单中确实包含一个 CSRF 令牌。
2.是的,令牌没有过期。
3.是的,SESSION_SECURE_COOKIE 设置为 false。
我使用redis 作为我的SESSION_DRIVER 并且expiration time 设置为120 minutes。
最让我困扰的是“有时有效,有时无效”。
如果我打开一个隐身标签并尝试登录,10/20 次它会正常工作而没有任何问题,但其他 10 次会导致
[419 |会话过期]错误
.
我的环境是CentOS,Nginx。
没有任何代理,我也没有使用 Cloudflare。
我真的很吃惊,因为这种行为并不一致,它实际上是随机行为,会导致登录成功或不成功。
有人知道可能是什么情况吗?
【问题讨论】:
-
清理缓存可能会有所帮助:
php artisan optimize:clear然后php artisan config:clear。此外,问题可能是未定义的索引或变量。如果 Laravel 没有捕获到任何错误/通知/警告,在 Auth::check() 之前在中间件中添加error_reporting(0)可以帮助您 -
尝试清除缓存,php、nginx和laravel的日志文件夹也没有错误。
-
先检查this是否帮助您找到错误。另外,这种行为是否只发生在一页中?如果刷新页面它仍然返回 419?
-
它实际上发生在
/login和/register路由上,当我刷新并尝试再次提交表单时,出现 419 的可能性仍然是 50/50。正如我之前提到的,它甚至可能在一个进入之前连续失败 10 次。我会给error_reporting()一个机会。