如何杀死用户的会话

时间:2017-09-15 11:03:56

标签: asp.net-mvc asp.net-mvc-4

在MVC应用程序中,用户已登录Machine1。同一个用户也登录了Machine2。那时,我想从Machine1注销用户,并希望从Machine1清除会话。怎么做到这一点?

如果您提供任何样本申请/代码,将不胜感激。

请帮忙。提前致谢。 请帮忙。提前谢谢。

4 个答案:

答案 0 :(得分:0)

Session.Abandon()销毁会话并触发Session_OnEnd事件。

Session.Clear()只删除Object中的所有值(内容)。具有相同密钥的会话仍然存在。

因此,如果您使用Session.Abandon(),则会丢失该特定会话,并且用户将获得新的会话密钥。例如,当用户注销时,您可以使用它。

使用Session.Clear(),如果您希望用户保持在同一会话中(例如,如果您不想让他重新登录)并重置所有会话特定数据。

答案 1 :(得分:0)

为了首先实现所需的功能,我建议用户成功登录后,将SessionId CurrentDateTime和UserId保存到数据库中的某个特殊表中,例如“LoginHistory”。然后在

中的global.asax中
protected void Application_PreRequestHandlerExecute(Object sender, EventArgs e);

从“LoginHistory”中取出DateTime排序的前1行以获取当前用户ID,并将数据库中的sessionId值与当前用户的sessionId进行比较。

如果它们不同,则注销当前用户

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

答案 2 :(得分:0)

在您的退出中使用此操作可能会帮助您

  Session.Clear();

或者

 session["YourSessionKey"]=null;

答案 3 :(得分:0)

以下是使用哪种方法进行kill会话的一些场景。

Session.Remove(yoursession); - >从会话状态集合中删除项目。

Session.RemoveAll() - >从会话集合中删除所有项目。

Session.Clear() - >从会话集合中删除所有项目。注意:Clear和RemoveAll之间没有区别。 RemoveAll()在内部调用Clear()。

Session.Abandon() - >取消当前会话。

根据您的要求,这样会更好

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

如果CookiesSupported为false,SignOut方法将从cookie或URL中删除表单身份验证票证信息。您可以将SignOut方法与RedirectToLoginPage方法结合使用,将一个用户注销,并允许其他用户登录。

请参阅 LINK