示例#1
0
        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());
            }
        }
示例#2
0
        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 }));
        }
示例#3
0
        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());
            }
        }