2012-08-16 181 views
0

在我正在處理它的項目中,我們決定防止多登錄 爲此,我在任何用戶登錄時在sql表中插入記錄到網站,註銷時刪除它的記錄(我使用session_end方法來做到這一點)防止多登錄導致錯誤,並防止再次登錄

這是一個問題:我設置會話超時10分鐘,所以通過使用這種策略,當用戶關閉瀏覽器爲了再次登錄,他必須等待1到10分鐘(因爲sql table中有一個記錄會在最多10分鐘內被session_end方法刪除並阻止用戶再次登錄)。

是否有任何機構在那裏幫助我在這個問題?每一個想法可能是有用的

對不起我的語法錯誤,我的英語新。欲瞭解更多詳情評論我請

問候, 阿里Foroughi

+1

我認爲你可以用一種方法做到這一點。無論何時用戶關閉瀏覽器窗口,您都可以彈出消息並詢問用戶,通過關閉此窗口,您將從站點註銷。看到這個帖子http://forums.asp.net/p/1205886/2121753.aspx似乎有點困難 – 2012-08-16 13:23:34

+0

這聽起來不像一個非常可靠的解決方案。如果(例如)停電導致服務器故障,該怎麼辦?會話結束事件將不會運行,導致用戶被鎖定。 – user1429080 2012-08-16 13:37:16

回答

0

如果他靠近我不會用會話超時,以防止多個登錄了你的狀態,用戶必須等待10分鐘,登錄的原因再次他的瀏覽器意外,瀏覽器崩潰或者像評論一樣,服務器和連接記錄的問題留在數據庫中。還有一些其他人可能會在不知情的情況下將會話時間設置更改爲1分鐘或1小時。

我參加了一年前的系統,增加了每個用戶只有連接的需求。我們設計的系統認爲最後一次登錄是有效的。我們還決定不使用會話超時來檢查連接是否仍然有效。用戶每次在網站上執行操作時,我們都會檢查上次他是否在數據庫中使用值存儲進行操作,並將其與當前時間進行比較。如果差值低於最大不活動值(如10分鐘),則系統將該值更新爲當前時間並允許繼續或重定向到超時頁面。 有了這個解決方案,它阻止了多次登錄,並防止了許多問題的發生,用戶不必等待重新連接到網站。