ASP.NET中JWT载荷含正确声明但用户声明为空的问题
ASP.NET JWT认证中提取用户声明为空的问题
我是ASP.NET新手,一直在尝试实现JWT认证,但受此问题困扰已久。我获取到了JWT,想要从中提取用户声明,但声明始终为空。我已将该token放到jwt.io上验证,所有内容都正常,实在不知道还能做什么了。以下是我用于提取声明的方法,若需更多信息请告知:
[HttpGet("UserInfo")] [Authorize] public ActionResult<UserAccount> GetCurrentUser() { try { var headers = Request.Headers; var authHeader = headers["Authorization"].ToString(); var token = authHeader.StartsWith("Bearer ") ? authHeader.Substring(7) : authHeader; Console.WriteLine(token); // 这里能输出正确的token,且token包含正确的声明 var identity = _http.HttpContext.User; if(identity != null) { var userClaims = identity.Claims; Console.WriteLine(userClaims.Count()); // 这里始终输出0 var userName = userClaims.FirstOrDefault(userClaim => userClaim.Type == ClaimTypes.Name)?.Value; return Ok(new { UserName = userName }); } return BadRequest(); } catch(Exception e) { return BadRequest(e.Message); } }
内容的提问来源于stack exchange,提问作者haknook
相关产品推荐
相关产品推荐

