在MVC應用程序中,用戶已登錄Machine1。同樣的用戶也登錄了Machine2。那時候,我想從Machine1註銷用戶並想從Machine1清除會話。如何實現這一目標?如何殺死用戶的會話
如果您提供任何示例應用程序/代碼,將不勝感激。
請幫忙。提前致謝。 請幫忙。提前致謝。
在MVC應用程序中,用戶已登錄Machine1。同樣的用戶也登錄了Machine2。那時候,我想從Machine1註銷用戶並想從Machine1清除會話。如何實現這一目標?如何殺死用戶的會話
如果您提供任何示例應用程序/代碼,將不勝感激。
請幫忙。提前致謝。 請幫忙。提前致謝。
Session.Abandon()銷燬會話並觸發Session_OnEnd事件。
Session.Clear()僅刪除Object中的所有值(內容)。具有相同密鑰的會話仍然存在。
因此,如果您使用Session.Abandon(),那麼您將丟失該特定會話,並且用戶將獲得新的會話密鑰。例如,當用戶註銷時可以使用它。
使用Session.Clear(),如果您希望用戶保持在同一個會話中(例如,如果您不想讓他重新登錄)並重置所有會話特定數據。
爲了實現所需的功能,我建議用戶成功登錄後,將SessionId CurrentDateTime和UserId保存到數據庫中的某個特殊表格中,例如「LoginHistory」。然後從「LoginHistory」爲當前用戶ID的日期時間排列和
protected void Application_PreRequestHandlerExecute(Object sender, EventArgs e);
拉前1行中的Global.asax從數據庫與當前用戶的sessionId比較的sessionId值。
如果他們註銷當前用戶
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
使用不同,則在註銷動作可能是它幫助你
Session.Clear();
否則
session["YourSessionKey"]=null;
這裏有一些場景何時使用哪種方法進行殺會話。
Session.Remove(yoursession);
- >從會話狀態集合中刪除項目。
Session.RemoveAll()
- >刪除會話集合中的所有項目。
Session.Clear()
- >刪除會話集合中的所有項目。注意:Clear和RemoveAll沒有區別。 RemoveAll()在內部調用Clear()。
Session.Abandon()
- >取消當前會話。
根據您的要求,這將更好地
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
SignOut方法將刪除的cookie或URL Forms身份驗證票證信息,如果CookiesSupported是假的。您可以將SignOut方法與RedirectToLoginPage方法結合使用,將一個用戶登出並允許其他用戶登錄。
請參閱 LINK