2009-11-03 90 views
0

我有一個CakePHP的經驗,現在開始編寫ASP.NET MVC框架。 我遇到登錄系統問題。如何限制用戶在我的系統上同時只記錄一次?ASP.NET MVC只允許一個登錄用戶

我可以在我的數據庫中創建一個字段,客戶在登錄時變爲活動狀態。如果他註銷,我可以使活動爲false。但如果會議剛剛結束呢?我怎麼能抓住這個?

回答

0

不幸的是,由於會話結束事件的實現方式,這是一個挑戰,因爲您在啓動時無法訪問所需的信息。

因此,如果您跟蹤他們上次登錄的會話,然後在不同會話中從同一經過身份驗證的用戶處獲取請求,請稍微轉移問題,然後刪除該會話的身份驗證(實際上舊會話),並將適當的重定向轉發給合適的消息。

這裏的關鍵不僅是跟蹤當前登錄的人員,還會跟蹤該登錄的會話ID。

細節有點複雜 - 但您可以在請求級別執行測試,或者添加您自己的基本頁類,從中導出所有「真實」頁面並檢入頁面事件。

+0

我可以將sessionID保留在我的數據庫中。如果用戶註銷,它將被刪除。但是,如果用戶的會話結束,sessionID將停留在那裏。 因此,當用戶登錄時,我必須檢查當前的sessionId是否與數據庫中的不同,以及會話超時是否已結束,假設我還保留用戶的日誌記錄時間,是否正確? – gong 2009-11-03 12:52:47

+0

嗯,有點。沒有一個解決方案。我在看它的方式是,當用戶登錄時,您不會特別在意會話以前是否處於活動狀態,因爲該會話現在無效,並且(「舊」會話的)用戶需要強制註銷。你關心的是當你提出請求時,用戶*和*會話的組合是否有效。 – Murph 2009-11-03 13:54:01

3

這個article提供了一個可能的解決方案。

+0

你會得到一個upvote'cos正在做類似於我的建議,並有代碼! – Murph 2009-11-03 13:55:10