You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel跨子域名路由会话数据丢失问题求助

解决Laravel多子域名会话共享问题

这个问题我之前帮不少开发者处理过,核心原因是Laravel默认的Cookie配置只绑定当前域名,跨子域名时会话Cookie无法被识别,所以跳转后会出现需要重新登录的情况。下面是具体的解决方案:

1. 配置Cookie的Domain参数

找到项目根目录下的config/session.php文件,修改其中的domain配置项:

'domain' => '.project.com',

注意前面的点号非常关键——它表示这个Cookie对project.com下的所有子域名都生效,不管是app.project.com还是user.project.com,都能识别到同一份会话Cookie。

2. 确保Session驱动一致

两个子域名指向的应用必须使用相同的会话驱动,比如同时用file、database或者redis。在config/session.php里检查driver配置:

'driver' => env('SESSION_DRIVER', 'file'),
  • 如果用file驱动:要保证两个子域名的应用读写的是同一个会话文件目录;
  • 如果用database或redis驱动:只要数据库/Redis的连接信息一致,就能自动共享会话数据。

3. 清除旧Cookie并测试

修改配置后,先清除浏览器中原来的Cookie(旧Cookie是绑定单一子域名的),然后重新登录app.project.com,再跳转至user.project.com,此时应该能保持登录状态了。

额外注意事项

  • 若你的Laravel版本较老(比如5.x及之前),可能还需要在config/cookie.php里也将domain设置为.project.com,新版本Laravel的会话配置会同步到Cookie设置,但保险起见可以检查一下;
  • 确保两个子域名指向的是同一个代码库,或者至少会话相关的配置完全一致,否则即使Domain配置正确,会话存储位置不同也无法共享数据。

内容的提问来源于stack exchange,提问作者JenuRudan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:25:22