如何使用ASP.NET Identity注销所有会话? 假设您是从具有相同用户的两个不同浏览器登录的。当用户从一个浏览器注销时,另一个浏览器的会话也应该无效。 (我需要这个来改变用户密码更改的所有会话。)
您可以使用以下代码使用ASP.Net Identity注销当前会话。
var AutheticationManager = HttpContext.GetOwinContext().Authentication;
AuthenticationManager.SignOut();
这不会签署用户的所有会话。
编辑: 会议的想法是一个很好的起点。我解决了这个问题并写了一个blog post以防你遇到同样的问题。
答案 0 :(得分:5)
您可以通过在列表中添加Global.asax中新创建的会话来实现此目的。
随后迭代以比较用户和SignOut用户的会话。
protected void Session_Start(object sender, EventArgs e)
{
MyGlobalObject.Sessions.Add(HttpContext.GetOwinContext().Authentication);
}
之后,在注销活动中:
private void SignoutAll()
{
foreach (var authenticationManager in MyGlobalObject.Sessions)
{
authenticationManager.SignOut();
}
}