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

如何让同一域名不同子域的Laravel应用共享用户认证系统?

跨主域与子域实现Laravel免重复登录方案

你的猜测完全可行,不需要手动编写登录逻辑,通过统一配置就能实现session cookie跨主域/子域共享,具体步骤如下:

核心配置项调整

  • 共享Application Key
    两个Laravel项目的.env文件中,APP_KEY必须完全相同。Laravel用这个Key加密session数据,不一致的话子域无法解析主域的session内容。如果是新生成的Key,要同步更新两个项目,避免已登录用户会话失效。

  • 配置Cookie作用域
    修改两个项目config/session.php中的以下配置:

    • 'domain' => '.mydomain.com':前面的点必须保留,这样Cookie会作用于主域及所有子域
    • 'secure' => env('SESSION_SECURE', true):HTTPS环境设为true,本地HTTP测试可设为false
    • 'same_site' => 'lax':避免设为'strict',否则子域请求无法携带Cookie
  • 统一Session存储与驱动
    因为两个项目共享数据库且在同一服务器:

    • 把.env中的SESSION_DRIVER统一设为database(或redis,如果有部署)
    • 确保两个项目使用同一个数据库的session表(Laravel默认表结构一致,直接共享即可)

额外优化建议

  • 把用户模型、认证相关逻辑抽成共享代码(比如Composer包或共享目录),避免两个项目的认证逻辑出现差异,导致会话验证失败
  • 确认服务器的CORS配置已经允许主域与子域之间的Cookie传递,你已经提到这一点,确保配置正确即可

特殊场景说明

只有当两个项目的认证逻辑存在根本性差异(比如用户表结构完全不同),或者无法共享session存储时,才需要手动编写会话同步逻辑。你的场景完全符合配置共享的条件,无需额外编码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:16:01