繁体   English   中英

什么时候应该使用HttpContext.User.Identity.IsAuthenticated和SignInManager.IsSignedIn(HttpContext.User)?

[英]When should HttpContext.User.Identity.IsAuthenticated and SignInManager.IsSignedIn(HttpContext.User) be used?

这些似乎有些模棱两可。我在整个项目中交替使用它们,唯一的原因是因为我无法弄清楚何时使用其中一个。

一个是真的而另一个不是的情况会怎样?

如果我只使用ASP.NET身份对用户进行身份验证,那么一个或另一个更有利还是真的不重要?

  • HttpContext.User.Identity.IsAuthenticated检查当前用户是否经过身份验证(如果用户已通过身份验证,则为true;否则为false。)。 当您像这样设置用户时: HttpContext.User = new ClaimsPrincipal(new ClaimsIdentity("SomeAuthType")); 或者对于任何身份验证中间件(例如JwtBearer ),请求身份验证都成功,这将是真的。
  • SignInManager是aspnet标识的一个功能,它检查主体是否具有应用程序cookie标识的标识 如果查看源代码 ,可以看到: return principal?.Identities != null && principal.Identities.Any(i => i.AuthenticationType == Options.Cookies.ApplicationCookieAuthenticationScheme);

因此,如果您使用aspnet身份并且想要检查用户是否通过aspnet身份中间件 (通过app.UseIdentity() )进行身份验证,那么请使用SignInManager.IsSignedIn 如果您不使用aspnet标识,或者当前用户的身份验证并不重要,那么请使用HttpContext.User.Identity.IsAuthenticated

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM