public Response <SecurityResponse> RefreshToken(string token) { try { if (string.IsNullOrEmpty(token)) { return(ResponseBadRequest(new List <string> { MessagesResponse.BadRequest })); } var itemJWT = TokenJWT.Where(item => item.AccessToken == token).FirstOrDefault(); if (itemJWT == null) { return(ResponseBadRequest(new List <string> { MessagesResponse.BadRequest })); } var time = int.Parse(_infoJWT.TimeMin); var response = new SecurityResponse { AccessToken = ManagerToken.GenerateToken(_infoJWT.Key, time, _infoJWT.User), Expiration = DateTime.Now.AddMinutes(time), TokenType = "Bearer" }; TokenJWT.Remove(itemJWT); TokenJWT.Add(response); return(ResponseSuccess(new List <SecurityResponse> { response })); } catch (Exception ex) { _logger.LogError(ex, $"Exception Method {nameof(RefreshToken)}"); return(ResponseFail()); } }
public ActionResult <object> RefreshToken([FromBody] RefreshTokenModel entity) { Managers managerModel = CurrentManager; var jwtSection = _configuration.GetSection("jwt"); int tokenExpires = Convert.ToInt32(jwtSection.GetSection("TokenExpires").Value); int refreshTokenExpires = Convert.ToInt32(jwtSection.GetSection("RefreshTokenExpires").Value); string token = entity.token; string refreshToken = entity.refresh_token; if (managerModel == null) { return(ErrorResult <int>("用户登录过期")); } ManagerToken tokenModel = _manager.GetToken(managerModel.Id); if (tokenModel == null) { return(ErrorResult <int>("认证过期")); } _manager.RemoveToken(managerModel.Id); JwtTokenHelper jwtTokenHelper = new JwtTokenHelper(); var claims = new Claim[] { new Claim(ClaimTypes.Name, managerModel.UserName), new Claim(ClaimTypes.Role, managerModel.RoleId.ToString()), new Claim(JwtRegisteredClaimNames.Sid, managerModel.Id.ToString()), }; string newToken = jwtTokenHelper.GetToken(claims); string newRefreshToken = jwtTokenHelper.RefreshToken(); string tokenExpired = StringHelper.GetTimeStamp(DateTime.UtcNow.AddMinutes(tokenExpires)); string refreshToeknExpired = StringHelper.GetTimeStamp(DateTime.UtcNow.AddMinutes(refreshTokenExpires)); _manager.AddRefeshToken(newToken, newRefreshToken, managerModel.Id, refreshTokenExpires); return(SuccessResult <object>(new { token = newToken, refreshToken = newRefreshToken, userName = managerModel.UserName, expires = tokenExpired, refreshExpires = refreshToeknExpired })); }
public Response <SecurityResponse> ValidateUser(SecurityRequest request) { try { var messages = request.Validate(); if (messages != null && messages.Count > 0) { return(ResponseBadRequest(messages.ToList())); } if (request.User != _infoJWT.User || request.Password != _infoJWT.Password) { return(ResponseBadRequest(new List <string> { MessagesResponse.BadRequest })); } var time = int.Parse(_infoJWT.TimeMin); var response = new SecurityResponse { AccessToken = ManagerToken.GenerateToken(_infoJWT.Key, time, request.User), Expiration = DateTime.Now.AddMinutes(time), TokenType = "Bearer" }; TokenJWT.Add(response); return(ResponseSuccess(new List <SecurityResponse> { response })); } catch (Exception ex) { _logger.LogError(ex, $"Exception Method {nameof(ValidateUser)}"); return(ResponseFail()); } }