public virtual async Task <IActionResult> RefreshToken([FromBody] RefreshTokenForm refreshTokenForm, CancellationToken cancellationToken = default(CancellationToken)) { var claimsPrincipal = tokenFactory.GetPrincipalFromExpiredToken(refreshTokenForm.AccessToken); var userId = claimsPrincipal.Identity.GetUserId <int>(); var claimList = claimsPrincipal.Claims; await tokenService.DeleteExpiredRefreshTokensAsync(cancellationToken); var refreshToken = await tokenService.FindRefreshToken(userId, refreshTokenForm.RefreshToken, cancellationToken); if (refreshToken == null || refreshToken.Expiration < DateTime.Now) { return(Unauthorized(new ResponseMessage() { Title = "خطای احراز هویت", Descripton = "رفرش توکن منقضی یا نامعتبر است" })); } var generatedToken = tokenFactory.GenerateToken(claimList); refreshToken.RefreshToken = generatedToken.RefreshToken; refreshToken.Expiration = generatedToken.AccessTokenExpirationTime; tokenService.UpdateRefreshToken(refreshToken); return(Created(string.Empty, generatedToken)); }
public async Task <IActionResult> Refresh([FromBody] RefreshTokenForm token) { try { var userId = _jwtService.GetRefreshTokenUserId(token.Token); var accessToken = await _authService.GetAccessToken(userId); var refreshToken = await _authService.GetRefreshToken(userId); return(refreshToken != null && accessToken != null ? (IActionResult)StatusCode(201, new TokenResponse() { AccessToken = accessToken, RefreshToken = refreshToken }) : StatusCode(500)); } catch { return(StatusCode(500)); } }