【发布时间】:2020-09-04 05:13:35
【问题描述】:
我有一个 ASP.NET Core 应用程序。
在应用程序中,我有一个 AuthController,例如:
[HttpPost("register")]
public async Task<IActionResult> Register([FromBody] UserForRegisterDto userForRegisterDto)
{
var userToCreate = new IdentityUser(userForRegisterDto.Username);
var result = await _userManager.CreateAsync(userToCreate, userForRegisterDto.Password);
return Ok(new
{
token = GenerateJwtToken(userToCreate).Result,
user = result
});
}
private async Task<string> GenerateJwtToken(IdentityUser user)
{
var claims = new List<Claim>
{
new Claim(ClaimTypes.NameIdentifier, user.Id),
new Claim(ClaimTypes.Name, user.UserName)
};
var roles = await _userManager.GetRolesAsync(user);
foreach (var role in roles)
{
claims.Add(new Claim(ClaimTypes.Role, role));
}
var key = new SymmetricSecurityKey(Encoding.UTF8
.GetBytes(_config.GetSection("AppSettings:Token").Value));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(claims),
Expires = DateTime.Now.AddDays(1),
SigningCredentials = creds
};
var tokenHandler = new JwtSecurityTokenHandler();
var token = tokenHandler.CreateToken(tokenDescriptor);
return tokenHandler.WriteToken(token);
}
如您所见,在注册时,API 会将 JWT 令牌发送回客户端。 我想针对应用程序中的所有控制器验证此令牌。
我知道我必须在Startup.cs 文件中添加一些逻辑,但我就是不知道是什么。谁能帮我实现这个目标?
【问题讨论】:
-
验证是什么意思?您想将该令牌中的身份插入到 http 上下文中吗?
标签: asp.net-core