返回 Bug 清单
BUG-0363project-29高已修复config

SSO cookie 域写成具体子域 —— session 无法跨子域共享,且 domain 在两处维护

发现:2026-10-01验证:2026-10-09置信度:95%

症状

用户在子域 A 登录后跳到子域 B 仍是未登录态;排查还发现修一处 domain 后另一处仍写旧值——同一配置两个维护点互相打架。

根因

① Cookie 的 domain 属性写成具体子域时,cookie 只回传给该子域,跨子域 SSO 必须用父域(.example.com);② 统一封装层(ctx.cookieDomain)与路由层(route.ts)各自设置 domain,双维护点导致修复不彻底——这是『修了可见的一处、漏了隐藏的另一处』。

修复方案

1) SSO 会话 cookie domain 一律用父域 .example.com,Secure + HttpOnly + SameSite 按需(跨子域跳转场景 SameSite=Lax 需评估); 2) domain 设置单源化:只留 ctx.cookieDomain 一处,路由层删除重复赋值; 3) SSO 验收清单:A 登录 → B 直接带态,三子域逐一实测。

检测命令

浏览器 DevTools 查看各子域 document.cookie/请求头;grep -rn 'domain' <auth 路由> | 核对赋值点数量

错误签名

uc_session cookie domain 设为 accounts.example.com 等具体子域; cognx/cpa 子域各发各的 session;且 route.ts 与 ctx.cookieDomain 两处各自设置 domain

技术信息

来源项目

project-29

标签

sso, cookie-domain, cross-subdomain, single-source, session