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
这是什么原因造成的?
这意味着:
- 会话驱动程序未正常启动
- 您用来连接到 laravel 应用程序服务器的客户端不接受 cookies
- 为错误的域 and/or 路径设置了 Cookie。
对于情况 1,确保 StartSession
中间件存在于 app/Kernel.php
at $middlewareGroups
-> web
对于案例 3,请检查此 answer。如果您的应用程序依赖于单个 domain/path,我建议您删除 SESSION_DOMAIN
.
最后,从会话驱动程序中手动删除所有会话,然后 运行 php artisan config:cache
再试一次。
每次我重新加载页面时,我都会从 session()->getId()
中得到一个新值。
有些人建议将 laravel_session
添加到未加密的 cookie 异常中,但这并不能解决问题,而且无论如何也不是一个可行的选择。
无论我使用哪种会话存储方法,问题仍然存在。文件、redis等都有同样的问题
这是在全新安装 Laravel 7 时发生的。
.env 的内容:
SESSION_DRIVER=redis
SESSION_LIFETIME=1440
SESSION_DOMAIN=example.test
这是什么原因造成的?
这意味着:
- 会话驱动程序未正常启动
- 您用来连接到 laravel 应用程序服务器的客户端不接受 cookies
- 为错误的域 and/or 路径设置了 Cookie。
对于情况 1,确保 StartSession
中间件存在于 app/Kernel.php
at $middlewareGroups
-> web
对于案例 3,请检查此 answer。如果您的应用程序依赖于单个 domain/path,我建议您删除 SESSION_DOMAIN
.
最后,从会话驱动程序中手动删除所有会话,然后 运行 php artisan config:cache
再试一次。