2011-12-14 144 views
1

我已經在使用Tomcat服務器,它被重定向到另一個網站的密碼認證上運行的應用程序(和存儲一些數據),然後重定向回我的Tomcat服務器會話變量重定向

EX

1至A
A到B
B到2

其中1和2是我的應用程序頁面
A和B上的其他應用

我是我第1頁使用

HttpSession session = request.getSession(true); 
session.setAttribute("loginUser", "loginUser"); 

上設置會話變量,並使用

String loginUser= session.getAttribute("loginUser"); 

使用它第2頁,但得到2

+0

單點登錄是一個更復雜的話題,您必須閱讀。將sessionid傳遞給其他站點並不是一個好主意,但JSESSIONID = ...是可用的(最初用於非JavaScript瀏覽器)。 OpenID是SSO的完全其他方式,我喜歡。 – 2011-12-14 11:18:33

+0

1是創建會話的頁面?啓用了cookies嗎?在1到A和B到2之間是什麼時間? – 2011-12-14 11:20:00

+0

查看SSO解決方案(例如www.jasig.org CAS)。如果你想做到這一點,你可以嘗試使用cookies而不是會話變量,儘管不如使用SSO ... – 2011-12-14 11:37:40

回答

1

如果你正在做在同一個上下文(應用程序)重定向,而使用RequestDispatcher做一個forward(通過你的requestresponse)。那樣,你通過你的會話。

否則,我的建議是不在會話中存儲loginUser,而是將用戶ID變量作爲一些智能(並且困惑)的字符串傳遞給其他應用程序,編寫一種機制來檢索用戶登錄會話狀態並從那裏。這就是所謂的單點登錄。

0

一個空指針異常也可能是因爲

'會話是暫時的,並且在下列情況之一發生時其生存期結束:

A user leaves your site and the user's browser does not accept cookies. 

A user quits the browser. 

The session is timed out due to inactivity. 

The session is completed and invalidated by the servlet. 

The user logs out and is invalidated by the servlet.' 

參考http://docs.oracle.com/cd/E15523_01/web.1111/e13712/sessions.htm