Asp.net mvc 如何杀死用户';会议

Asp.net mvc 如何杀死用户';会议,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,在MVC应用程序中,用户已登录Machine1。同一用户也登录了Machine2。当时,我想从Machine1注销用户,并想从Machine1清除会话。如何做到这一点 如果您提供任何示例应用程序/代码,将不胜感激 请帮忙。提前谢谢。 请帮忙。提前感谢。会话.放弃()将销毁会话并触发会话结束事件 Session.Clear()只从对象中删除所有值(内容)。具有相同密钥的会话仍处于活动状态 因此,如果您使用Session.about(),您将丢失该特定会话,用户将获得一个新的会话密钥。例如,当用户注

在MVC应用程序中,用户已登录Machine1。同一用户也登录了Machine2。当时,我想从Machine1注销用户,并想从Machine1清除会话。如何做到这一点

如果您提供任何示例应用程序/代码,将不胜感激

请帮忙。提前谢谢。 请帮忙。提前感谢。

会话.放弃()将销毁会话并触发会话结束事件

Session.Clear()只从对象中删除所有值(内容)。具有相同密钥的会话仍处于活动状态

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

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

Session.about()将销毁会话,并触发Session\u oned事件

Session.Clear()只从对象中删除所有值(内容)。具有相同密钥的会话仍处于活动状态

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


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

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

protected void Application_PreRequestHandlerExecute(Object sender, EventArgs e);
从当前用户id的“LoginHistory”中提取按DateTime排序的前1行,并将数据库中的sessionId值与当前用户的sessionId进行比较

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

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

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

protected void Application_PreRequestHandlerExecute(Object sender, EventArgs e);
从当前用户id的“LoginHistory”中提取按DateTime排序的前1行,并将数据库中的sessionId值与当前用户的sessionId进行比较

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

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

在注销操作中使用此选项可能会对您有所帮助

  Session.Clear();
否则

 session["YourSessionKey"]=null;

在注销操作中使用此选项可能会对您有所帮助

  Session.Clear();
否则

 session["YourSessionKey"]=null;

下面是将使用哪种方法终止会话的一些场景

会话。删除(您的会话)->从会话状态集合中删除项目

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

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

会话。放弃()
->取消当前会话

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

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

请参阅

以下是将使用哪种方法终止会话的一些场景

会话。删除(您的会话)->从会话状态集合中删除项目

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

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

会话。放弃()
->取消当前会话

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

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

请参阅