Exemplo n.º 1
0
        /// <summary>
        /// 刷新令牌
        /// </summary>
        /// <param name="refreshToken"></param>
        /// <returns></returns>
        public async Task <LoginResultModel> RefreshToken(string refreshToken)
        {
            var result   = new LoginResultModel();
            var cacheKey = CacheKeys.AUTH_REFRESH_TOKEN + refreshToken;

            if (!_cacheHandler.TryGetValue(cacheKey, out AccountAuthInfoEntity authInfo))
            {
                authInfo = await _authInfoRepository.GetByRefreshToken(refreshToken);

                if (authInfo == null)
                {
                    result.Error = "身份认证信息无效,请重新登录~";
                    return(result);
                }

                //加入缓存
                var expires = (int)(authInfo.RefreshTokenExpiredTime - DateTime.Now).TotalMinutes;
                await _cacheHandler.SetAsync(cacheKey, authInfo, expires);
            }

            if (authInfo.RefreshTokenExpiredTime <= DateTime.Now)
            {
                result.Error = "身份认证信息过期,请重新登录~";
                return(result);
            }

            var account = await _accountRepository.GetAsync(authInfo.AccountId);

            if (account == null)
            {
                result.Error = "账户信息不存在~";
                return(result);
            }
            var checkAccountResult = account.Check();

            if (!checkAccountResult.Successful)
            {
                result.Error = checkAccountResult.Msg;
                return(result);
            }

            result.Success      = true;
            result.AccountId    = account.Id;
            result.AccountType  = account.Type;
            result.TenantId     = account.TenantId;
            result.UserName     = account.UserName;
            result.Name         = account.Name;
            result.Phone        = account.Phone;
            result.Platform     = authInfo.Platform;
            result.RefreshToken = authInfo.RefreshToken;
            result.LoginTime    = _dateTimeHelper.TimeStamp2DateTime(authInfo.LoginTime);
            return(result);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 刷新令牌
        /// </summary>
        /// <param name="refreshToken"></param>
        /// <returns></returns>
        public async Task <ResultModel <LoginResultModel> > RefreshToken(string refreshToken)
        {
            var result   = new ResultModel <LoginResultModel>();
            var cacheKey = CacheKeys.AUTH_REFRESH_TOKEN + refreshToken;

            if (!_cacheHandler.TryGetValue(cacheKey, out AccountAuthInfoEntity authInfo))
            {
                authInfo = await _authInfoRepository.GetByRefreshToken(refreshToken);

                if (authInfo == null)
                {
                    return(result.Failed("身份认证信息无效,请重新登录~"));
                }

                //加入缓存
                var expires = (int)(authInfo.RefreshTokenExpiredTime - DateTime.Now).TotalMinutes;
                await _cacheHandler.SetAsync(cacheKey, authInfo, expires);
            }

            if (authInfo.RefreshTokenExpiredTime <= DateTime.Now)
            {
                return(result.Failed("身份认证信息过期,请重新登录~"));
            }

            var account = await _accountRepository.GetAsync(authInfo.AccountId);

            if (account == null)
            {
                return(result.Failed("账户信息不存在"));
            }

            var checkAccountResult = account.Check();

            if (!checkAccountResult.Successful)
            {
                return(result.Failed(checkAccountResult.Msg));
            }

            return(result.Success(new LoginResultModel
            {
                Account = account,
                AuthInfo = authInfo
            }));
        }
Exemplo n.º 3
0
        public async Task <ResultModel <LoginResultModel> > RefreshToken(string refreshToken)
        {
            var result   = new ResultModel <LoginResultModel>();
            var cacheKey = string.Format(CacheKeys.RefreshToken, refreshToken);

            if (!_cacheHandler.TryGetValue(cacheKey, out AccountAuthInfoEntity authInfo))
            {
                authInfo = await _authInfoRepository.GetByRefreshToken(refreshToken);

                if (authInfo == null)
                {
                    return(result.Failed("刷新令牌无效"));
                }

                //加入缓存
                var expires = (int)(authInfo.RefreshTokenExpiredTime - DateTime.Now).TotalMinutes;
                await _cacheHandler.SetAsync(cacheKey, authInfo, expires);
            }

            if (authInfo.RefreshTokenExpiredTime <= DateTime.Now)
            {
                return(result.Failed("刷新令牌过期"));
            }

            var account = await _accountRepository.GetAsync(authInfo.AccountId);

            var checkAccountResult = CheckAccount(account);

            if (!checkAccountResult.Successful)
            {
                return(result.Failed(checkAccountResult.Msg));
            }

            return(result.Success(new LoginResultModel
            {
                Account = account,
                AuthInfo = authInfo
            }));
        }