什么时候应该使用HttpContext.User. identity . isauthenticated和SignInM

本文关键字:identity isauthenticated SignInM User HttpContext 什么时候 | 更新日期: 2023-09-27 18:03:17

这两个似乎有些模棱两可。我在整个项目中交替使用它们,唯一的原因是我不知道什么时候使用一个或另一个。

一个为真而另一个为假的情况是什么?

如果我只使用ASP。. NET身份验证用户,哪一个更有利,或者它真的不重要?

什么时候应该使用HttpContext.User. identity . isauthenticated和SignInM

  • HttpContext.User.Identity.IsAuthenticated检查当前用户是否为Authenticated(如果用户已通过身份验证,则为true;否则,假)。当您像这样设置用户: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。如果您不使用asp.net身份或者当前用户的身份验证方式并不重要,则使用HttpContext.User.Identity.IsAuthenticated