2011-12-16 49 views
0

我做了一個asp.net網站,它使用Session對象來存儲每個登錄用戶的信息。要檢查用戶是否仍然登錄,我檢查會話中是否存在某個對象。其他用戶的會話無效

系統使用Jasig CAS認證,單點登錄工作(如:登錄後,用戶的Session對象設置正確)。

CAS還支持單點登出。發生這種情況的方式是CAS在我的網站上調用一個URL,並提供一些關於CAS會話的參數。

我現在需要做的是使指定用戶的所有Session對象無效。

我該如何從我網站上的頁面無效隨機其他用戶的Session對象?有沒有我可以清除的數據庫,這是否全部在內存中(如果我知道要查找什麼,我可以查看web.config)?

我以前見過這個問題,大多數答案是「在Session全局變量旁邊保留一個全局變量,然後檢查這個變量以查看用戶是否應該註銷」,但我不知道不喜歡那個解決方案...

乾杯!

回答

0

該會話由設計專用於個人用戶。因此,放棄它,必須由用戶來完成。

所以你可能不得不使用另一個列表&檢查。

理想情況下,您不應該將您的身份驗證狀態綁定到會話。用戶是否被認證應該是獨立的。然後,您可以選擇通過查詢身份驗證狀態來放棄會話。這也使得更容易實現的機制,如計數登錄用戶&確保只從一個位置登錄 - 如果您需要這些。