相同瀏覽器同一瀏覽器多用戶登錄問題


  • 問題:在如果在同一個瀏覽器下只有一個用戶登錄的情況,在服務端可以使用 Session 存儲用戶登錄信息。但是在項目中如果需要在同一個瀏覽器下允許多個不同的用戶登錄,這樣做會存在問題,因為服務端區分不同用戶是通過 Cookie 中存儲的 JSESSIONID 區分的,如果 JSESSIONID 相同,那么他們在服務端將會使用同一個 Session 對象。而同一瀏覽器使用的 Cookie 是相同的, 從而 JSESSIONID 也是相同的,無法區分不同的用戶。當瀏覽器登錄第一個用戶后,用戶信息寫入到 Session 中,第二個用戶登錄時,將會覆蓋第一個用戶的登錄信息。

  • 解決方法:不再依賴 Tomcat 默認的 JSESSIONID 來標識客戶端,每進行一次登錄后,服務端根據用戶信息生成一份令牌,一份寫入到數據庫中並設置有效時間與身份信息存儲在一起,定時清除,另一份返回到客戶端。這個令牌可以放到頁面的某個隱藏域中,但是不能存放在 Cookie 內,因為這樣還是不能唯一區分用戶。接下來客戶端每次訪問服務端都帶上該令牌,以供校驗身份信息,根據令牌的值,在數據庫中找到對應的身份信息。這樣就能區分同一瀏覽器下登錄的不同用戶了。校驗通過后,再將此令牌返回給客戶端,以供其下次訪問使用。為防止令牌被盜用,盡量使用 Https。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM