在我們的JAVA web應用程序中,我們在數據庫表active_sessions
中維護用戶會話。而且我們不允許每個用戶有多個會話。它意味着什麼,如果您已經使用特定的用戶帳戶登錄,則無法使用同一個帳戶打開新的會話。如果有人這樣做,我們顯示錯誤'用戶已經有一個活動會話'。當用戶點擊Logout
時,從表active_sessions
中刪除他的輸入。但是,如果用戶在不註銷的情況下關閉窗口,他的條目仍保留在表active_sessions
中。因此,任何未來嘗試登錄都會導致錯誤「用戶已經有活動會話」。關於如何在數據庫中銷燬用戶會話的任何提示,以防他在不註銷的情況下關閉瀏覽器窗口。銷燬存儲在窗口關閉的數據庫中的用戶會話
編輯:閱讀所有帖子後,似乎沒有乾淨的方式來限制每個用戶的單個會話。
這是非常危險的! – SMA
同意@almasshaikh。會話應該在超時時自動關閉(不管用戶退出Web應用程序的方式)。如果用戶在一段時間內未處於活動狀態,請殺掉他們的會話。這將允許用戶重新登錄。編輯:替代方法,下一次登錄嘗試會自動使第一個會話無效,踢出該會話。 – Dave
有多個同時「會話」有什麼問題?這是你的網絡應用程序設計或許可/權利問題的限制嗎?我個人會討厭任何限制我自由的網絡應用程序。 –