Cookie&Session - 關閉瀏覽器後, 如何保證服務端未過期的sessionid還能使用?

1.現有問題如下:

B/S架構, 關閉瀏覽器後, 保存登錄信息試下, 需要重新登錄. ( 此時服務端sessionid並沒有消亡 )

2.問題分析:

1.正常情況下,發送http請求時,消息頭中會自動攜帶cookie信息,這其中就會包括SESSIONID信息,所以只要我們沒有關閉瀏覽器,消息頭中都會自動攜帶這個信息,以供服務器訪問相應的session。
   
2.但當我們關閉瀏覽器之後,cookie中的JSESSIONID信息沒有了,不會自動攜帶這個session信息了, 再次訪問時, 服務器首先檢查這個客戶端的請求裏是否包含了一個session標識, 若服務器找不到這個session,就會自動添加新的session,
   
3.若服務器端之前的sessionid還沒有消亡,服務器會一直保留這個會話對象直到它處於非活動狀態超過設定的間隔爲止。所以我們沒必要新添加session。

3.實現步驟:

1.(結合cookie來實現)

我們可以手動爲cookie中添加JSESSIONID信息,此時不管你的瀏覽器是否關閉,我的cookie中都會攜帶JSESSION信息,
這樣的話,只要session沒有消亡, 服務器就一定能夠找到對應的session,而不會重新建立一個新的session。

//登錄成功後 ? 手動添加cookie,保存JSESSIONID信息
Cookie cookie = new Cookie("JSESSIONID", session.getId());
cookie.setMaxAge(1800); //設置cookie 和 session生命週期同步.
response.addCookie(cookie);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章