示例#1
0
        public async Task <ActionResult> Get(int id)
        {
            var user = await _userRep.FindEntityAsync <ADUserT>(id);

            if (user != null)
            {
                return(Ok(user));
            }
            return(NotFound(_localizer["N00001"]));
        }
        public async Task <ActionResult> GetToken([FromBody] LoginModel model)
        {
            ResultModel resultModel;

            _logger.LogInformation($"{model.UserName}:{model.Password}");
            if (!string.IsNullOrWhiteSpace(model.UserName) && !string.IsNullOrWhiteSpace(model.Password))
            {
                var user = await _userRep.FindEntityAsync <ADUserT>(x => x.LoginName == model.UserName);

                if (user == null)
                {
                    resultModel = ResultModel.GetFail("用戶不存在");
                    return(Ok(resultModel));
                }

                if (PasswordStorage.VerifyPassword(model.Password, user.LoginPwdHash !))
                {
                    var refreshToken            = Guid.NewGuid().ToString("N");
                    var refreshTokenExpiredTime = DateTime.Now.AddMinutes(_jwtBearerOption.RefreshExpiration);

                    var cacheKey   = $"RefreshToken:{refreshToken}";
                    var cacheValue = JsonConvert.SerializeObject(user);

                    _cache.SetString(cacheKey, cacheValue,
                                     new DistributedCacheEntryOptions
                    {
                        AbsoluteExpiration = refreshTokenExpiredTime
                    });

                    resultModel = ResultModel.GetSuccess("", new
                    {
                        AccessToken         = _jwtTokenValidationService.GenerateToken(user),
                        RefreshTokenExpired = DateTimeHelper.ConvertToLong(refreshTokenExpiredTime),
                        RefreshToken        = refreshToken
                    });
                    return(Ok(resultModel));
                }

                resultModel = ResultModel.GetFail("用戶名或密碼錯誤");
                return(Ok(resultModel));
            }

            resultModel = ResultModel.GetFail("用戶名或密碼不能為空");
            return(Ok(resultModel));
        }