忽略某些路由上的过期令牌

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了忽略某些路由上的过期令牌相关的知识,希望对你有一定的参考价值。

[使用JWT令牌,我正在为.NET Core API进行身份验证。我想知道当用户请求某个路由(例如“ / refresh”)来刷新过期的令牌时,是否可以告诉我的API忽略令牌的过期。我知道可以通过POST请求提供令牌来解决此问题,但是我希望能够在只想识别主叫用户的情况下忽略令牌的过期。

我的代码如下完成。目前,它可以处理POST请求,但我希望能够通过标头提供过期的令牌。

[AllowAnonymous]
[HttpPost("refresh")]
public async Task<IActionResult> Refresh(RefreshRequest refreshRequest)
{
    // Validate refresh token
    if (!_tokenService.RefreshTokenValid(refreshRequest.Refresh_Token)) {
        return BadRequest("The request token is not a valid token.");
    }

    var tokenHandler = new JwtSecurityTokenHandler();

    // Validate actual token
    if (!tokenHandler.CanReadToken(refreshRequest.Token)) {
        return BadRequest("The JWT token is not a valid token.");
    }

    // Get the user from the JWT token
    var userId = _tokenService.GetUserIdFromtoken(refreshRequest.Token);
    var repoUser = await _repo.GetUserById(userId);

    // Map the user, generate a token and send response
    var newToken = _tokenService.GenerateRefreshedJwtToken(repoUser);
    var tokenUser = _mapper.Map(repoUser, new AuthRefreshedTokenUser(newToken));
    return Ok(tokenUser);
}

以上是关于忽略某些路由上的过期令牌的主要内容,如果未能解决你的问题,请参考以下文章

仅在刷新页面时令牌过期时注销?为啥?

如何处理 Cognito 上的令牌过期问题

Spring Boot 安全性 - 允许使用过期 JWT 令牌的用户请求

Django Rest Framework 避免身份验证 JWT

Laravel 护照授权令牌在生成新令牌时过期

收到访问令牌后如何解释 oauth expires=4 位代码