Skip to content

Instantly share code, notes, and snippets.

@changhuixu
Created July 24, 2020 19:05
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save changhuixu/87d632bf38f5ac7b9230c6f5acc44e35 to your computer and use it in GitHub Desktop.
Save changhuixu/87d632bf38f5ac7b9230c6f5acc44e35 to your computer and use it in GitHub Desktop.
[HttpPost("refresh-token")]
[Authorize]
public async Task<ActionResult> RefreshToken([FromBody] RefreshTokenRequest request)
{
try
{
var userName = User.Identity.Name;
_logger.LogInformation($"User [{userName}] is trying to refresh JWT token.");
if (string.IsNullOrWhiteSpace(request.RefreshToken))
{
return Unauthorized();
}
var accessToken = await HttpContext.GetTokenAsync("Bearer", "access_token");
var jwtResult = _jwtAuthManager.Refresh(request.RefreshToken, accessToken, DateTime.Now);
_logger.LogInformation($"User [{userName}] has refreshed JWT token.");
return Ok(new LoginResult
{
UserName = userName,
Role = User.FindFirst(ClaimTypes.Role)?.Value ?? string.Empty,
AccessToken = jwtResult.AccessToken,
RefreshToken = jwtResult.RefreshToken.TokenString
});
}
catch (SecurityTokenException e)
{
return Unauthorized(e.Message); // return 401 so that the client side can redirect the user to login page
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment