2017-10-13 114 views
0

我正在處理一些破損認證的舊Java代碼。 Web應用程序以成功創建和驗證用戶對象的jsp文件開始。然後使用以下代碼創建一個會話變量。Java會話變量無法從新頁面訪問

session.setAttribute("guiUser", userIdentity); 

如果我決定要在同一個JSP文件中該用戶對象:

UserIdentity foo = (UserIdentity) session.getAttribute("guiUser"); 
System.out.println(foo.getName()); 

我能成功地獲取認證的用戶對象。

但是,使用

response.sendRedirect(targetPage); 

當我到了這個新的jsp頁面,登錄檢查JSP是其他任何東西之前運行的頁面,然後重定向到另一個JSP不同的項目中在我的工作區。登錄檢查有以下代碼來實例化從會話變量用戶對象(或至少這是我認爲這是應該做的。)

<jsp:useBean id="guiUser" class="com.ussposco.sso.UserIdentity" scope="session"/> 
<% (code that uses guiUser object) %> 

似乎這段代碼不工作,因爲用戶對象爲null。所以我試着用這段代碼從會話中抓取用戶對象。

UserIdentity foo = (UserIdentity) session.getAttribute("guiUser"); 
System.out.println(foo.getName()); 

而且該對象仍爲空。

我對Java Web應用程序很新穎,但我認爲這是響應重定向方式的問題。 Chrome瀏覽器中可以看到兩個不同的Cookie,但我認爲應該只有一個。另外,在生產網站上,它改變了不同於我使用的代碼(明顯過期)使用的cookie的價值。

回答

1

當您重定向到不同的應用程序時,您將無法獲得相同的會話對象。爲此需要單獨演唱(SSO)。

+0

謝謝,我認爲這是問題所在。我不認爲SSO是一種選擇,我會看看我是否可以將這兩個應用程序合併爲一個。 –