The code below works fine at generating new tokens from a valid token but not an expired one.
[HttpPost]
[Route("refreshtoken")]
public async Task<IActionResult> RefreshToken()
{
var identity = User.Identity as ClaimsIdentity;
var username = identity.FindFirst("user");
if (username.Value != null)
{
var user = await _userManager.FindByNameAsync(username.Value);
var token = GenerateToken(user);
return Ok(token);
}
return BadRequest("Could not refresh token");
}
As soon as I try to refresh an invalid token I get the error message NullReferenceException: Object reference not set to an instance of an object
. Having looked at the error logs then username.Value == null
so it appears I am unable to get claims from an expired token.
Is there a better way to generate a refresh token from expired tokens?