Используя токены JWT, я работал над аутентификацией для моего. NET Core API. Мне было интересно, могу ли я сказать своему API игнорировать истечение срока действия моего токена, когда пользователь запрашивает определенный маршрут, например, "/ refre sh", чтобы обновить sh токены с истекшим сроком действия. Я понимаю, что это можно обойти, предоставив токены с помощью запроса 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);
}