我已经在我的应用程序中实现了基于令牌的身份验证系统,但我有一个小问题。在方法内如何检查用户是否已登录(例如,如果请求中存在有效的令牌)?所以使用 [Authorize]?
因此,我有一个控制器,在该控制器中,我想检查用户是否已登录。我考虑使用以下方法:
if (_signInManager.IsSignedIn(ClaimsPrincipal.Current))
{
...
}
但它不起作用,因为ClaimsPrincipal.Current始终为空
我已经在我的应用程序中实现了基于令牌的身份验证系统,但我有一个小问题。在方法内如何检查用户是否已登录(例如,如果请求中存在有效的令牌)?所以使用 [Authorize]?
因此,我有一个控制器,在该控制器中,我想检查用户是否已登录。我考虑使用以下方法:
if (_signInManager.IsSignedIn(ClaimsPrincipal.Current))
{
...
}
但它不起作用,因为ClaimsPrincipal.Current始终为空
您不需要使用SigninManager或类似的东西。用户被注入到管道中(在基础控制器的User属性上),并且它的信息会被身份验证中间件(cookie或令牌)自动填充。因此,在您的控制器上:
bool isAuthenticated = User.Identity.IsAuthenticated;
是的。将 [Authorize]
属性放在你的类或方法上以检查用户是否已经认证。你可以通过以下代码来获取用户:
var principal = User as ClaimsPrincipal;
var check = User.Identity.IsAuthenticated;