Laravel 每个请求的会话 ID 都会更改

Laravel session ID changes on each request

每次我重新加载页面时,我都会从 session()->getId() 中得到一个新值。

有些人建议将 laravel_session 添加到未加密的 cookie 异常中,但这并不能解决问题,而且无论如何也不是一个可行的选择。

无论我使用哪种会话存储方法,问题仍然存在。文件、redis等都有同样的问题

这是在全新安装 Laravel 7 时发生的。

.env 的内容:

SESSION_DRIVER=redis
SESSION_LIFETIME=1440
SESSION_DOMAIN=example.test

这是什么原因造成的?

这意味着:

  1. 会话驱动程序未正常启动
  2. 您用来连接到 laravel 应用程序服务器的客户端不接受 cookies
  3. 为错误的域 and/or 路径设置了 Cookie。

对于情况 1,确保 StartSession 中间件存在于 app/Kernel.php at $middlewareGroups -> web

对于案例 3,请检查此 answer。如果您的应用程序依赖于单个 domain/path,我建议您删除 SESSION_DOMAIN.


最后,从会话驱动程序中手动删除所有会话,然后 运行 php artisan config:cache 再试一次。