C# 检查用户是否在ASP.NET Core中使用基于令牌的身份验证登录

C# 检查用户是否在ASP.NET Core中使用基于令牌的身份验证登录,c#,asp.net,asp.net-core,access-token,C#,Asp.net,Asp.net Core,Access Token,我设法在我的应用程序中实现了这个基于令牌的身份验证系统,但我有一个小问题。如何检查用户是否在方法中对其进行了签名(例如,请求中是否有有效令牌)?那么[授权]呢 所以我有一个控制器,在该控制器中,我想检查用户是否已登录。我想用这个: if (_signInManager.IsSignedIn(ClaimsPrincipal.Current)) { ... } 但自ClaimsPrincipal之后它就不起作用了。当前值始终为空。将[Authorize]属性置于类或方法上方,以检查用户是否

我设法在我的应用程序中实现了这个基于令牌的身份验证系统,但我有一个小问题。如何检查用户是否在方法中对其进行了签名(例如,请求中是否有有效令牌)?那么[授权]呢

所以我有一个控制器,在该控制器中,我想检查用户是否已登录。我想用这个:

if (_signInManager.IsSignedIn(ClaimsPrincipal.Current))
{
    ...
}

但自ClaimsPrincipal之后它就不起作用了。当前值始终为空。将
[Authorize]
属性置于类或方法上方,以检查用户是否正在进行身份验证。您可以通过以下代码获取用户:

var principal = User as ClaimsPrincipal;
var check = User.Identity.IsAuthenticated;

您不需要使用SigninManager或类似的工具。用户被注入管道(在基本控制器的用户属性上),其信息由身份验证中间件(cookie或令牌)自动填充。因此,在控制器上:

bool isAuthenticated = User.Identity.IsAuthenticated;

我想先在没有[Authorize]的情况下尝试,但它说
当前上下文中不存在名称“User”
您需要以下名称空间:using System.Security.Principal;我现在引用了它,但它没有区别,或者使用HttpContext.Current.UserHttpContext.Current.UserI尝试了你的代码,但它说,
当前上下文中不存在“User”这个名称
你的控制器类是从“controller”继承的还是一个POCO?从controller继承修复了这个问题!真不敢相信我竟然忘了!