ASP.Net Identity注销所有会话

时间:2014-01-19 14:32:04

标签: c# asp.net .net

如何使用ASP.NET Identity注销所有会话? 假设您是从具有相同用户的两个不同浏览器登录的。当用户从一个浏览器注销时,另一个浏览器的会话也应该无效。 (我需要这个来改变用户密码更改的所有会话。)

您可以使用以下代码使用ASP.Net Identity注销当前会话。

var AutheticationManager = HttpContext.GetOwinContext().Authentication;
AuthenticationManager.SignOut();

这不会签署用户的所有会话。

编辑: 会议的想法是一个很好的起点。我解决了这个问题并写了一个blog post以防你遇到同样的问题。

1 个答案:

答案 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();
    }
}