2017-09-15 223 views
1

在MVC應用程序中,用戶已登錄Machine1。同樣的用戶也登錄了Machine2。那時候,我想從Machine1註銷用戶並想從Machine1清除會話。如何實現這一目標?如何殺死用戶的會話

如果您提供任何示例應用程序/代碼,將不勝感激。

請幫忙。提前致謝。 請幫忙。提前致謝。

回答

0

Session.Abandon()銷燬會話並觸發Session_OnEnd事件。

Session.Clear()僅刪除Object中的所有值(內容)。具有相同密鑰的會話仍然存在。

因此,如果您使用Session.Abandon(),那麼您將丟失該特定會話,並且用戶將獲得新的會話密鑰。例如,當用戶註銷時可以使用它。

使用Session.Clear(),如果您希望用戶保持在同一個會話中(例如,如果您不想讓他重新登錄)並重置所有會話特定數據。

0

爲了實現所需的功能,我建議用戶成功登錄後,將SessionId CurrentDateTime和UserId保存到數據庫中的某個特殊表格中,例如「LoginHistory」。然後從「LoginHistory」爲當前用戶ID的日期時間排列和

protected void Application_PreRequestHandlerExecute(Object sender, EventArgs e); 

拉前1行中的Global.asax從數據庫與當前用戶的sessionId比較的sessionId值。

如果他們註銷當前用戶

FormsAuthentication.SignOut(); 
FormsAuthentication.RedirectToLoginPage(); 
0

使用不同,則在註銷動作可能是它幫助你

Session.Clear(); 

否則

session["YourSessionKey"]=null; 
0

這裏有一些場景何時使用哪種方法進行殺會話。

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