ASP.Net Identity注销所有会话

use*_*420 3 .net c# asp.net

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

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

var AutheticationManager = HttpContext.GetOwinContext().Authentication;
AuthenticationManager.SignOut();
Run Code Online (Sandbox Code Playgroud)

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

编辑:会议的想法是一个很好的起点.我解决了这个问题,写了一篇博文,以防你遇到同样的问题.

Pat*_*man 5

您可以通过在列表中添加Global.asax中新创建的会话来实现此目的.

之后迭代以比较用户和SignOut用户的会话.

protected void Session_Start(object sender, EventArgs e)
{
    MyGlobalObject.Sessions.Add(HttpContext.GetOwinContext().Authentication);
}
Run Code Online (Sandbox Code Playgroud)

然后,在注销事件中:

private void SignoutAll()
{
    foreach (var authenticationManager in MyGlobalObject.Sessions)
    {
        authenticationManager.SignOut();
    }
}
Run Code Online (Sandbox Code Playgroud)