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

Tomcat 多 Web 應用共享 Session ID 實現方案:Cookie 手動同步與 Single Sign-On 架構

     編輯:程式設計疑難解答

默認隔離

Tomcat 為每個 Web 應用(Context)維護獨立 Manager,Session ID(JSESSIONID)互不共享。

方案一:手動同步 Cookie(簡單但脆弱)

// 登錄成功後
String sessionId = request.getSession().getId();
Cookie cookie = new Cookie("JSESSIONID", sessionId);
cookie.setPath("/"); // 共享根路徑
cookie.setDomain(".example.com"); // 同主域
response.addCookie(cookie);

缺點:Session 數據仍分散在各應用內存,需共享存儲(Redis/Database)才能真正實現會話共享。

方案二:Spring Session + Redis(推薦)

<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
</dependency>
// application.yml
spring:
  session:
    store-type: redis
  redis:
    host: localhost
    port: 6379

所有應用接入同一 Redis,自動共享 Session,支援集群、過期策略。

方案三:CAS / OAuth2 單點登錄(SSO)

架構層面解決:統一認證中心頒發 Token,各應用驗證 Token 獲取用戶身份,無需共享 Session ID。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved