如何杀死用户的会话
在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