【问题标题】:ASP.Net Identity LogoutASP.Net 身份注销
【发布时间】:2013-12-19 12:23:47
【问题描述】:

如何注销使用 ASP.Net 身份系统登录的用户?

我试过了:

Authentication.SignOut();

但如果我使用它然后调用标有[Authorize] 的API(将令牌添加为标头)它仍然会返回数据(而不是未经授权)。

【问题讨论】:

  • 您是否添加了可以使用此资源的特定用户或组?

标签: .net asp.net-identity


【解决方案1】:

您需要在AuthenticationManager 上致电SignOut,您可以从OWIN context 获得。

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

【讨论】:

  • 只是一个快速修复:它应该包括Current:HttpContext.Current.GetOwinContext().Authentication
  • 如果你在 ASP.NET MVC 控制器中,你有一个来自基类的实例属性HttpContext,所以在那种情况下你不需要HttpContext.Current
  • @MatthewWalton 是的,但如果你在让我们说你的自定义 HttpModule,那么你当然需要HttpContext.Current...
  • 大概这是 .Net Core 之前的版本。知道如何在 Core 中做到这一点吗?
  • @Auspex 刚刚尝试了一些方法,在我的例子中,SingInManager 类的 SignOutAsync() 方法有效
【解决方案2】:

在我的情况下,因为我的AccountController 中有Authorize 属性,并且在类级别具有管理员角色,所以我必须将[AllowAnonymous] 属性放入我的注销方法。也可能是您的解决方案。

【讨论】:

  • 如果匿名用户尝试使用该 url 注销,您可能会遇到异常。您应该只将角色作为登录用户的标志。与索引登录用户的角色相同。
猜你喜欢
  • 2010-11-07
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
  • 2021-06-19
  • 2015-02-15
  • 1970-01-01
  • 1970-01-01
  • 2015-05-25
相关资源
最近更新 更多