Обновить просроченный токен веб-API - PullRequest
0 голосов
/ 14 марта 2019

Приведенный ниже код отлично работает при создании новых токенов из действительного токена, но не с просроченным.

[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");
}

Как только я пытаюсь обновить неверный токен, я получаю сообщение об ошибке NullReferenceException: Object reference not set to an instance of an object. После просмотра журналов ошибок username.Value == null оказалось, что я не могу получить утверждения с токеном с истекшим сроком действия.

Есть ли лучший способ создать токен обновления из токенов с истекшим сроком действия?

1 Ответ

1 голос
/ 14 марта 2019

То, что вы хотели бы сделать, это извлечь принцип самого токена, примерно так:

//Create the token handler for the JWT validation
var tokenHandler = new JwtSecurityTokenHandler();
//Try and validate the token
var principal = tokenHandler.ValidateToken(token, tokenValidationParameters, out _);

Получив основной токен, вы можете извлечь из него конкретные требования.такой как пользователь.Например, чтобы получить электронное письмо, вы можете сделать что-то вроде:

var emails = principal.Claims.First(c => c.Type == ClaimTypes.Email).Value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...