Exemple #1
0
        /// <summary>
        /// 登录处理
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <LoginResultModel> Handle(PhoneLoginModel model)
        {
            var resultModel = new LoginResultModel
            {
                LoginMode   = LoginMode.Phone,
                Phone       = model.Phone,
                Platform    = model.Platform,
                LoginTime   = DateTime.Now,
                AccountType = model.AccountType
            };

            //解析租户编号
            await ResolveTenant(resultModel);

            //检测
            var checkResult = await Check(model, resultModel);

            if (checkResult.Successful)
            {
                resultModel.Success = true;
                //更新认证信息并返回登录结果
                await UpdateAuthInfo(resultModel, model);
            }
            else
            {
                resultModel.Success = false;
                resultModel.Error   = checkResult.Msg;
            }

            //记录日志
            await SaveLog(resultModel);

            return(resultModel);
        }
Exemple #2
0
        /// <summary>
        /// 登录处理
        /// </summary>
        private async Task<ResultModel<LoginResultModel>> Handle(PhoneLoginModel model, LoginLogEntity log)
        {
            var result = new ResultModel<LoginResultModel>();
            var config = _configProvider.Get<AuthConfig>();
            if (!config.LoginMode.Phone)
                return result.Failed("不允许使用手机号登录的方式");

            //检测图片验证码
            var verifyCodeCheckResult = _verifyCodeProvider.Check(model);
            if (!verifyCodeCheckResult.Successful)
                return result.Failed(verifyCodeCheckResult.Msg);

            //检测手机验证码
            var verifyResult = await _phoneVerifyCodeProvider.Verify(model.Phone, model.Code, model.AreaCode);
            if (!verifyResult.Successful)
                return result.Failed(verifyResult.Msg);

            //查询账户
            var account = await _repository.GetByPhone(model.Phone, model.AccountType);
            if (account == null)
                return result.Failed("账户不存在");

            if (log != null)
                log.AccountId = account.Id;

            //检测账户
            var accountCheckResult = account.Check();
            if (!accountCheckResult.Successful)
                return result.Failed(accountCheckResult.Msg);

            //更新认证信息并返回登录结果
            var resultModel = await UpdateAuthInfo(account, model, config);
            return resultModel != null ? result.Success(resultModel) : result.Failed();
        }
        public async Task <IResultModel> Login(PhoneLoginModel model)
        {
            model.IP        = _ipHelper.IP;
            model.UserAgent = _ipHelper.UserAgent;

            var result = await _service.Login(model);

            return(LoginHandle(result));
        }
Exemple #4
0
        /// <summary>
        /// 登录处理
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task<ResultModel<LoginResultModel>> Handle(PhoneLoginModel model)
        {
            var log = CreateLog(model);
            if (log == null)
                return await Handle(model, null);

            log.LoginMode = Domain.LoginLog.LoginMode.Phone;
            log.Phone = model.Phone;

            var result = await Handle(model, log);
            await SaveLog(log, result);

            return result;
        }
Exemple #5
0
        /// <summary>
        /// 登录处理
        /// </summary>
        private async Task <IResultModel> Check(PhoneLoginModel model, LoginResultModel resultModel)
        {
            var config = _configProvider.Get <AuthConfig>();

            if (!config.LoginMode.Phone)
            {
                return(ResultModel.Failed("不允许使用手机号登录的方式"));
            }

            //检测图片验证码
            var verifyCodeCheckResult = _verifyCodeProvider.Check(model);

            if (!verifyCodeCheckResult.Successful)
            {
                return(ResultModel.Failed(verifyCodeCheckResult.Msg));
            }

            //检测手机验证码
            var verifyResult = await _phoneVerifyCodeProvider.Verify(resultModel.Phone, model.Code, model.AreaCode);

            if (!verifyResult.Successful)
            {
                return(ResultModel.Failed(verifyResult.Msg));
            }

            //查询账户
            var account = await _repository.GetByPhone(model.Phone, model.AccountType, resultModel.TenantId);

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

            //设置账户编号和名称
            resultModel.AccountId = account.Id;
            resultModel.Name      = account.Name;

            //检测账户
            var accountCheckResult = account.Check();

            if (!accountCheckResult.Successful)
            {
                return(ResultModel.Failed(accountCheckResult.Msg));
            }

            //更新认证信息并返回登录结果
            return(ResultModel.Success());
        }
Exemple #6
0
 public Task <ResultModel <LoginResultModel> > Login(PhoneLoginModel model)
 {
     return(_phoneLoginHandler.Handle(model));
 }