每次请求都要更新访问令牌

时间:2018-04-10 16:48:13

标签: c# asp.net-core jwt

我有一个登录方法,它为我提供访问和刷新令牌。

[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分钟内)?

1 个答案:

答案 0 :(得分:0)

您可以使用令牌的到期时间设置变量或cookie,然后每个请求都需要检查此过期是否过去。如果是,您应该能够使用刷新令牌来获取新的访问令牌。

这将确保您不会为每个请求获取令牌,但仅在令牌过期时才会获得令牌。

相关问题