[英]ASP.NET Kill Session By Id
我的應用程序可以控制用戶權限,因為並非所有用戶都可以訪問完整的網站。 此時,特定用戶的所有權限都存儲在他的會話中,因為在每次回發后搜索數據庫都會出現問題。
問題是,當我刪除權限時,用戶仍然可以訪問該頁面,並且只有當他關閉瀏覽器時,更新才會生效。
有沒有辦法按ID殺死特定的應用程序會話,強制用戶再次登錄?
"Is there a way to Kill an specific Application Session by the ID, forcing user to Log in again?"
不可以。您只能訪問執行當前請求的用戶的Session對象(即您自己),而不能訪問其他用戶的Session對象。
因此,您需要將用戶的id存儲在其他位置,例如靜態集合中。 當用戶發出下一個請求時,您可以檢查該ID是否在該集合中,並更新權限或注銷該用戶。
另一種方法是將所有當前登錄用戶的權限對象保存在靜態集合中以及Session變量中。 這樣,您就可以在不訪問該用戶的Session對象的情況下更改權限對象。
當然,在Web應用程序中使用靜態變量需要采取常規預防措施。 由於多個線程可以訪問它,因此必須同步訪問。 此外,正如Alexei Levenkov所指出的,如果你有多台服務器,你必須保持數據在服務器之間同步。
你可以寫Session.Abandon();
或Session.Clear();
或Session.SessionID[int index];
將特定用戶會話值存儲在此,然后使用Session.Abandon();
和Session.Clear();
要殺死特定會話,請嘗試使用Session.Remove("key");
要刪除特定的Session
,然后使用Session.Remove()
,如下所示:
Session.Remove("YourKey");
注意:這會從Session
刪除值和鍵,而您可能會看到人們使用Session["YourKey"] = null;
只會刪除該值,但保留密鑰。 這可能是也可能不是你想要的,但只是想指出這種區別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.