![](/img/trans.png)
[英]SignInManager.IsSignedIn(User) versus User.Identity.IsAuthenticated
[英]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
),请求身份验证都成功,这将是真的。 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.