一,首先添加程序包
二,创建模型
在数据库上下文中由继承Dbcontext改为IdentityDbContext<IdentityUser>
三:
1.创建控制器AuthenticateController
public class AuthenticateController : ControllerBase
{
public readonly IConfiguration _configuration;
public AuthenticateController(IConfiguration configuration)
{
_configuration = configuration;
}
/// <summary>
/// 生成jwt令牌
/// </summary>
/// <param name="loginDto"></param>
/// <returns></returns>
[Route("login")]
[HttpPost]
public IActionResult Login([FromBody] LoginDto loginDto)
{
//创建JWT
//header
var signingAlgorithm = SecurityAlgorithms.HmacSha256;
//payload
var claims = new[]
{
new Claim(JwtRegisteredClaimNames.Sub, "fake_user_id"),
//new Claim(ClaimTypes.Role,"Admin")
};
//signituer
var secreByte=Encoding.UTF8.GetBytes(_configuration["Authentication:SecretKey"]);
var signingKey = new SymmetricSecurityKey(secreByte);
var signingCredentials = new SigningCredentials(signingKey, signingAlgorithm);
var token = new JwtSecurityToken(
issuer: _configuration["Authentication:Issuer"],
audience: _configuration["Authentication:Audience"],
claims,
notBefore:DateTime.UtcNow,
expires:DateTime.UtcNow.AddDays(1), //有效期
signingCredentials
);
var tokenStr = new JwtSecurityTokenHandler().WriteToken(token);
return Ok(tokenStr);
}
}
2.appsettings.jsn文件
3.Startup配置文件
4.在需要授权的api方法上添加 [Authorize]