コード例 #1
0
        /// <summary>
        /// 登录处理
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <LoginResultModel> Handle(UserNameLoginModel model)
        {
            var resultModel = new LoginResultModel
            {
                LoginMode   = LoginMode.UserName,
                UserName    = model.UserName,
                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);
        }
コード例 #2
0
        public async Task <IResultModel> Login(UserNameLoginModel model)
        {
            model.IP        = _ipHelper.IP;
            model.UserAgent = _ipHelper.UserAgent;

            var result = await _service.Login(model);

            return(LoginHandle(result));
        }
コード例 #3
0
        /// <summary>
        /// 登录处理
        /// </summary>
        private async Task <ResultModel <LoginResultModel> > Handle(UserNameLoginModel model, LoginLogEntity log)
        {
            var result = new ResultModel <LoginResultModel>();
            var config = _configProvider.Get <AuthConfig>();

            if (!config.LoginMode.UserName)
            {
                return(result.Failed("不允许使用用户名的登录方式"));
            }

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

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

            //查询账户
            var account = await _repository.GetByUserName(model.UserName, model.AccountType);

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

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

            //检测密码
            var password = _passwordHandler.Encrypt(account.UserName, model.Password);

            if (!account.Password.Equals(password))
            {
                return(result.Failed("密码错误"));
            }

            //检测账户
            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());
        }
コード例 #4
0
        /// <summary>
        /// 登录处理
        /// </summary>
        private async Task <IResultModel> Check(UserNameLoginModel model, LoginResultModel resultModel)
        {
            var config = _configProvider.Get <AuthConfig>();

            if (!config.LoginMode.UserName)
            {
                return(ResultModel.Failed("不允许使用用户名的登录方式"));
            }

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

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

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

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

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

            //检测密码
            var password = _passwordHandler.Encrypt(account.UserName, model.Password);

            if (!account.Password.Equals(password))
            {
                return(ResultModel.Failed("密码错误"));
            }

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

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

            return(ResultModel.Success());
        }
コード例 #5
0
        /// <summary>
        /// 登录处理
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <ResultModel <LoginResultModel> > Handle(UserNameLoginModel model)
        {
            var log = CreateLog(model);

            if (log == null)
            {
                return(await Handle(model, null));
            }

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

            var result = await Handle(model, log);

            await SaveLog(log, result);

            return(result);
        }
コード例 #6
0
ファイル: AuthService.cs プロジェクト: wqzgh/NetModular
 /// <summary>
 /// 用户名登录
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public Task <ResultModel <LoginResultModel> > Login(UserNameLoginModel model)
 {
     return(_userNameLoginHandler.Handle(model));
 }