// _option 是配置文件读取的
var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_options.Secret));
var crenentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
var claims = new Claim[]
{
//添加自定义信息
new Claim(ClaimTypes.Role,"user"),//角色
new Claim(ClaimTypes.Name,"张三"),
new Claim("id","自定义的id")
};
var jwtSecurityToken = new JwtSecurityToken(
issuer: _options.Issuer,
audience: _options.Audience,
claims,
notBefore: DateTime.Now,//生效时间
expires: DateTime.Now.AddSeconds(_options.ExpiresIn),//过期时间
signingCredentials: crenentials);
//token就是你的令牌
var token = new JwtSecurityTokenHandler().WriteToken(jwtSecurityToken);
在控制器中使用。请 不 要 过 度 封 装 !
实践是检验真理的唯一标准
多多尝试会有意外的收获
[Route("api/[controller]")]
[ApiController]
//[Authorize]
[Authorize(Roles ="user")]
public class ValuesController : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
return Ok();
}
[AllowAnonymous]
[HttpGet("test")]
public IActionResult Get1()
{
return Ok();
}
}
客户端调用示例
如果您是请求头的方式校验的话
var access_token = '你的access_token'
var headers = {
Authorization:`Bearer ${access_token}`//注意这个空格哟
}
//你的ajax操作
//...