Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.Net标识注销所有会话_C#_Asp.net_.net - Fatal编程技术网

C# ASP.Net标识注销所有会话

C# ASP.Net标识注销所有会话,c#,asp.net,.net,C#,Asp.net,.net,如何使用ASP.NET标识注销所有会话? 假设您使用同一用户从两个不同的浏览器登录。当用户从一个浏览器注销时,另一个浏览器的会话也应无效。 (我需要此命令以在更改密码时使用户的所有会话无效。) 您可以使用以下代码使用ASP.Net标识注销当前会话 var AutheticationManager = HttpContext.GetOwinContext().Authentication; AuthenticationManager.SignOut(); 这不会注销用户的所有会话 编辑: 这次会

如何使用ASP.NET标识注销所有会话? 假设您使用同一用户从两个不同的浏览器登录。当用户从一个浏览器注销时,另一个浏览器的会话也应无效。 (我需要此命令以在更改密码时使用户的所有会话无效。)

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

var AutheticationManager = HttpContext.GetOwinContext().Authentication;
AuthenticationManager.SignOut();
这不会注销用户的所有会话

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

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

然后迭代以比较用户并注销用户的会话

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

什么是
MyGlobalObject
?您创建的一个对象,用于存储会话,以便可以枚举会话。请将您的解决方案作为另一个答案发布在此处,您的博客文章由于格式不好而无法阅读