【问题标题】:Laravel session ID changes on each requestLaravel 会话 ID 在每个请求上都会更改
【发布时间】:2020-06-05 05:22:26
【问题描述】:

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

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

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

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

.env 的内容:

SESSION_DRIVER=redis
SESSION_LIFETIME=1440
SESSION_DOMAIN=example.test

这是什么原因造成的?

【问题讨论】:

  • 检查 Kernel.php 并确保您没有重复的类,如 StartSession、AuthenticateSession、特别是在中间件组数组中

标签: laravel laravel-7


【解决方案1】:

这意味着:

  1. 会话驱动程序未正确启动
  2. 你用来连接 laravel 应用服务器的客户端不接受 cookie
  3. 为错误的域和/或路径设置了 Cookie。

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

对于案例 3,请检查此 answer。如果您的应用依赖于单个域/路径,我建议您删除 SESSION_DOMAIN。


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

【讨论】:

  • 问题是我没有将读取会话的中间件放在web 部分,而是将它放在未定义StartSession 中间件的通用中间件数组中。
猜你喜欢
  • 1970-01-01
  • 2014-01-15
  • 2014-03-29
  • 2014-06-30
  • 2016-01-12
  • 2017-05-24
  • 1970-01-01
  • 2017-07-27
  • 1970-01-01
相关资源
最近更新 更多