首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

同域雙站點 SSO:Cookie Token 驗證後手動構建 Session

     編輯:程式設計綜合問答

場景還原

  • A、B 站點同主域(如 a.example.com、b.example.com)。
  • A 站登錄後,Cookie 寫入 .example.com,攜帶 Token。
  • 訪問 B 站攔截器讀取 Cookie Token → 調用 Auth 服務驗證 → 通過後需在 B 站建立登錄態。

核心操作:手動構建 Session

// SpringMVC 攔截器 / Controller 中
HttpSession session = request.getSession(true); // 獲取或創建 Session
session.setAttribute("USER_INFO", userVo);      // 存入用戶信息
session.setAttribute("LOGIN_TOKEN", token);     // 可選:保留原始 Token

// 關鍵:確保 SessionID 寫入 Cookie(默認 JSESSIONID)
// 若域共享需在 application.yml 配置:
// server.servlet.session.cookie.domain: .example.com

Session 共享進階方案

  1. Spring Session + Redis:多實例自動共享,配置 spring.session.store-type=redis。
  2. JWT 無狀態:Token 自攜用戶信息,無需服務端 Session,B 站僅驗證簽名即可。
  3. 統一登錄中心 (CAS/OAuth2):A、B 皆重定向至 Auth Server,獲取統一 Ticket/Token。

安全提示

  • Cookie 設置 HttpOnly、Secure、SameSite=Lax。
  • Token 簽名驗證防篡改,設置合理過期時間。
  • 敏感操作需二次驗證(短信/密碼/生物識別)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved