忽略某些路由上的过期令牌
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);
}
以上是关于忽略某些路由上的过期令牌的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 安全性 - 允许使用过期 JWT 令牌的用户请求