是的,有一种更简单的方式来创建JWT并实现身份验证。下面是实现此功能的步骤:
首先,您需要在ASP.NET Core应用程序中安装Microsoft.AspNetCore.Authentication.JwtBearer包。
添加此包后,在Startup.cs文件的ConfigureServices方法中添加以下代码以启用JWT身份验证:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Configuration["Jwt:Issuer"],
ValidAudience = Configuration["Jwt:Issuer"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
};
});
app.UseAuthentication();
public string GenerateJSONWebToken(UserDTO userInfo)
{
var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]));
var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(Configuration["Jwt:Issuer"],
Configuration["Jwt:Issuer"],
null,
expires: DateTime.Now.AddMinutes(120),
signingCredentials: credentials);
return new JwtSecurityTokenHandler().WriteToken(token);
}
[HttpPost]
[AllowAnonymous]
public IActionResult Authenticate([FromBody] UserDTO login)
{
IActionResult response = Unauthorized();
var user = BuildUser(login);
var tokenString = _jwtTokenGenerator.GenerateJSONWebToken(user);
response = Ok(new { token =