[英]JSESSIONID is getting recreated automatically after successful login
要求是JSESSIONID在登錄之前和之后必須不同。
流程是login.jsp-> loginwebaction-> loginsuccess.jsp->過濾器-> otheraction
我的代碼是
HttpSession session = request.getSession(true);
成功登錄后,Jsessionid會更改,並顯示loginsuccess.jsp。 但我有一個問題。
此后,如果我單擊任何其他鏈接以執行其他操作,則會點擊過濾器。 在過濾器中,我必須檢查會話以獲取用戶信息(如果他已登錄),否則必須顯示錯誤頁面。
HttpSession session = request.getSession();
if(null == session.getAttribute("USER_INFO")){
//redirect to error page
}
問題是:在過濾器中訪問的會話是新的,不知道如何重新創建它。 過濾器中的代碼是
誰能幫助我,如何進一步糾正此會話更改?
如我所見,您的代碼中的問題是:
HttpSession session = request.getSession();
如果不存在會話, request.getSession()
Servlet API中 , request.getSession()
創建一個新會話。 您需要將其更改為:
HttpSession session = request.getSession(false);
這將確保它返回現有的會話對象(如果有效),或者如果沒有會話,則返回null。
另外,以下幾行代碼實際上是相同的:
HttpSession session = request.getSession();
//Overloaded getSession with 'true' boolean argument
HttpSession session = request.getSession(true);
希望這可以幫助。
如果這不能解決您的問題,則可能是其他問題。 請添加您的用例的框架代碼,以便我嘗試一下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.