c# - User.Identity.Name 每次使用基于 MongoDB 令牌的身份验证时为空
问题描述
我使用 Asp.Net Core 2.1 Web API (MongoDB) 创建了项目并使用了基于令牌的身份验证。User.Identity.Name 为空。User.Claims 也显示“枚举没有结果”。
var tokenHandler = new JwtSecurityTokenHandler();
var key = Encoding.ASCII.GetBytes(config.Value.Secret);
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(new Claim[]
{
new Claim(ClaimTypes.Name, UserDtos.Id.ToString()),
new Claim(JwtRegisteredClaimNames.Sub, user.Id),
new Claim(JwtRegisteredClaimNames.UniqueName, user.Id),
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
}),
Expires = DateTime.UtcNow.AddDays(7),
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
};
var token = tokenHandler.CreateToken(tokenDescriptor);
UserDtos.Token = tokenHandler.WriteToken(token);