我有一个登录方法,它为我提供访问和刷新令牌。
[HttpGet]
[AllowAnonymous]
public IActionResult Login()
{
var claims = new Claim[]
{
new Claim(ClaimTypes.Role, "Administrator")
};
var now = DateTime.UtcNow;
var signingCredentials = new SigningCredentials(
new SymmetricSecurityKey(Encoding.UTF8.GetBytes(this.configuration["Key"])), SecurityAlgorithms.HmacSha256);
var accessToken = new JwtSecurityTokenHandler().WriteToken(new JwtSecurityToken(
claims: claims,
notBefore: now,
expires: now.AddMinutes(10),
signingCredentials: signingCredentials));
var refreshToken = new JwtSecurityTokenHandler().WriteToken(new JwtSecurityToken(
notBefore: now,
expires: now.AddYears(2),
signingCredentials: signingCredentials));
return Ok(new JwtToken
{
AccessToken = accessToken,
RefreshToken = refreshToken
});
}
我使用Postman访问令牌。在标题中:
Bearer eyJhbGciOiJIUzI1 ......
但是10分钟后我无法使用API,因为访问令牌被拒绝了。如何在每次API请求时更新访问令牌(在这10分钟内)?
答案 0 :(得分:0)
您可以使用令牌的到期时间设置变量或cookie,然后每个请求都需要检查此过期是否过去。如果是,您应该能够使用刷新令牌来获取新的访问令牌。
这将确保您不会为每个请求获取令牌,但仅在令牌过期时才会获得令牌。