【问题标题】:ASP.Net Identity sign-out all sessionsASP.Net Identity 注销所有会话
【发布时间】:2014-09-30 15:30:58
【问题描述】:

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

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

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

这不会退出用户的所有会话。

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

【问题讨论】:

  • 最好在此处发布您的解决方案作为另一个答案,由于格式不佳,您的博客文章不足以阅读

标签: c# asp.net .net


【解决方案1】:

您可以通过在列表中从 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
  • 您创建的用于存储会话的对象,以便您可以枚举它们
猜你喜欢
  • 1970-01-01
  • 2013-06-06
  • 1970-01-01
  • 2012-02-15
  • 2012-02-21
  • 2019-07-09
  • 2016-02-17
  • 2013-11-16
相关资源
最近更新 更多