2017-09-15 237 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