2012-02-17 78 views
0

謝謝大家看我的帖子。使用特定的會話ID創建會話

由於授權問題的灰色地帶,我有兩個tomcat運行實例。我使用Apache代理在兩者之間進行無縫通信。

App1住在tomcatA。 App2住在tomcatB中。

兩者都需要用戶驗證,並使用會話來存儲數據。 App1是唯一可見的外部世界,所有進入App2的請求都是由App1的JavaScript生成的。不幸的是,App1有一個會話並將特定的JSESSIONID發送給App2的所有請求。由於在App2中沒有與該特定ID的會話,因此會返回錯誤。

有沒有辦法讓我用特定的ID初始化會話? 有沒有辦法讓我修改所有請求,以便將有效的會話標識放入標題中。

編輯:我需要App2認識到來自App1的具有特定會話ID的請求會映射到App2創建的會話。

回答

2

即使這兩個應用程序都在同一個Tomcat中,會話也會因爲它們按每個應用程序發佈而有所不同。就我個人而言,我並不完全相信這種設計。

如果您的問題是如何將身份驗證傳播到其他應用程序,請使用單一登錄應用程序,如Josso或CAS;要共享會話數據,您可以使用可從兩個應用程序訪問並可通過JSON訪問的集中緩存。

是的,會話數據不好。

更新:不能您只需執行一個握手協議,如:APP 2 /註冊/ {APP1會話ID} - 在這一點上你倆同時按住會話ID的,你可以彼此相關。這也可以通過會話監聽器完成。

+0

我也不喜歡這個設計,但作爲合作社實習生和即將離職,我沒有太多的選擇和時間來完全重新設計。我不需要在兩個會話之間共享數據,我也不需要以相同的方式進行身份驗證。我編輯了這個問題來澄清。 – Monir 2012-02-17 16:18:24

+0

SESSION使用數據,因此每次需要某些信息時都無需查詢數據庫。它足夠小,以至於我沒有必要實現一個堅持數據的結構。 – Monir 2012-02-17 16:29:42

+1

隨着你的編輯,我現在更好地理解你想完成什麼。您想要將App1會話與App2會話相關聯。我編輯了答案來反映這一點。 – 2012-02-17 16:42:26