public async Task <AuthSuccessResult> Refresh(refreshViewModel model) { var token = await _refreshTokens.GetQueryable(x => x.Token == model.refresh).Include(x => x.User).FirstOrDefaultAsync(); var refresh_time = _configuration.GetSection("JWT").GetValue <int>("REFRESH_LIFETIME"); if (token == null) { throw new Exception("We can't find your token..."); } if (token.ToLife.AddMinutes(refresh_time) <= DateTime.Now) { throw new Exception("Refresh token is expired..."); } var handler = new JwtSecurityTokenHandler(); var decrypt_token = handler.ReadJwtToken(model.token); if (decrypt_token.Claims.FirstOrDefault(x => x.Type == ClaimsIdentity.DefaultNameClaimType).Value != token.User.Id) { throw new Exception("Unknown error..."); } return(new AuthSuccessResult() { access_token = _jWTService.CreateToken(token.User), refresh_token = _jWTService.CreateRefreshToken(token.User), ava = token.User.img }); }