我們的SSO登錄過程對SQL Server中的自定義用戶存儲使用表單身份驗證。如何判斷用戶帳戶是否已使用ASP.Net Forms身份驗證登錄?
我們的新安全要求之一是隻允許帳戶一次有一個活動會話。因此,無論用戶何時登錄,我們都會檢查登錄憑證是否已經激活,並且最好防止新用戶再次登錄,直到其他會話結束。或者我們可以強制另一個會話結束,如果這會更容易實現。
有沒有一種簡單的方法來做到這一點與表單身份驗證?我們已經考慮了一種定製方法,即在數據庫中跟蹤每個會話,但這需要很多工作,我們可能需要修改所有應用程序以檢測session_end,我希望避免這種情況。我認爲必須在Forms Auth中處理這個問題。
我見過MembershipUser.IsOnline()方法,這看起來很理想,但我們沒有使用Membership提供者。
更新:要清楚,我不需要檢查當前用戶是否已登錄,我需要知道是否有人已經使用相同的帳戶登錄。
這已經過去了一段時間,但我看到它已經成爲一個值得注意的問題,所以我會分享我的解決方案 - 我們最終按照什麼Kb的方式進行了自定義方法。建議,基本上跟蹤數據庫中的用戶活動。對於每個用戶,我們會存儲最後的登錄日期和會話密鑰。密鑰是在用戶登錄時生成和存儲的,然後我們會檢查每個頁面上的當前密鑰。 如果當前用戶的密鑰與數據庫中的密鑰不匹配,我們會使其會話無效並立即將其註銷。 – Raelshark 2011-10-29 16:38:39