这 2 个似乎有些含糊不清。我在整个项目中交替使用它们,唯一的原因是我不知道何时使用其中一个。
在什么情况下一个为真而另一个为假?
如果我只使用 ASP.NET Identity 来对用户进行身份验证,是哪个更有利还是哪个并不重要?
最佳答案
HttpContext.User.Identity.IsAuthenticated
检查当前用户是否 经过身份验证(如果用户已通过身份验证,则为 true;否则为 false。)。当您这样设置用户时:HttpContext.User = new ClaimsPrincipal(new ClaimsIdentity("SomeAuthType"));
或任何认证中间件(如JwtBearer
)请求认证成功则为 是的。- SignInManager 是aspnet 身份 的一项功能,它检查委托(delegate)人是否具有应用程序cookie 身份 的身份。如果你看source code你可以看到:
return principal?.Identities != null && principal.Identities.Any(i => i.AuthenticationType == Options.Cookies.ApplicationCookieAuthenticationScheme);
。
因此,如果您使用 aspnet 身份,并且想检查用户是否通过 aspnet 身份中间件(通过 app.UseIdentity()
)进行身份验证,则使用 SignInManager.IsSignedIn
。如果您不使用 aspnet 身份或者当前用户的身份验证方式并不重要,则使用 HttpContext.User.Identity.IsAuthenticated
。
关于c# - 什么时候应该使用 HttpContext.User.Identity.IsAuthenticated 和 SignInManager.IsSignedIn(HttpContext.User)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39071374/