Пример #1
0
        public async Task <string> SignInAsync(LoginModel model)
        {
            BaseResult result = new BaseResult();

            #region 判断验证码
            if (!ValidateCaptchaCode(model.CaptchaCode))
            {
                result.ResultCode = ResultCodeAddMsgKey.SignInCaptchaCodeErrorCode;
                result.ResultMsg  = ResultCodeAddMsgKey.SignInCaptchaCodeErrorMsg;
                return(JsonHepler.ObjectToJSON(result));
            }
            #endregion
            #region 判断错误次数
            var ErrorTimes = HttpContext.Session.GetInt32(ManagerSignInErrorTimes);
            if (ErrorTimes == null)
            {
                HttpContext.Session.SetInt32(ManagerSignInErrorTimes, 1);
                ErrorTimes = 1;
            }
            else
            {
                HttpContext.Session.SetInt32(ManagerSignInErrorTimes, ErrorTimes.Value + 1);
            }
            if (ErrorTimes > MaxErrorTimes)
            {
                result.ResultCode = ResultCodeAddMsgKey.SignInErrorTimesOverTimesCode;
                result.ResultMsg  = ResultCodeAddMsgKey.SignInErrorTimesOverTimesMsg;
                return(JsonHepler.ObjectToJSON(result));
            }
            #endregion
            #region 再次属性判断
            LoginModelValidation validation = new LoginModelValidation();
            ValidationResult     results    = validation.Validate(model);
            if (!results.IsValid)
            {
                result.ResultCode = ResultCodeAddMsgKey.CommonModelStateInvalidCode;
                result.ResultMsg  = results.ToString("||");
            }
            #endregion

            model.Ip = HttpContext.GetClientUserIp();
            var manager = _servie.SignIn(model);

            return(null);
        }
Пример #2
0
        public IActionResult LoginIndex(LoginModel model)
        {
            #region 判断验证码
            //if (!ValidateCaptchaCode(model.CaptchaCode))
            //{
            //    AjaxData.Success = false;
            //    AjaxData.Message = ResultCodeAddMsgKeys.SignInCaptchaCodeErrorMsg;
            //    return Json(AjaxData);
            //}
            #endregion

            #region 属性判断
            LoginModelValidation validation = new LoginModelValidation();
            ValidationResult     results    = validation.Validate(model);
            if (!results.IsValid)
            {
                AjaxData.Success = false;
                AjaxData.Message = results.ToString("||");
                return(Json(AjaxData));
            }
            #endregion

            #region 数据库验证
            string r = HttpContext.Session.GetString(R_KEY);
            r = r ?? "";
            var result = _baseUserService.ValidateUser(model.Account, model.Password, r);
            AjaxData.Success = result.Success;
            AjaxData.Message = result.Message;
            if (result.Success)
            {
                _authenticationService.signIn(result.Token, result.User.Account);
            }
            return(Json(AjaxData));

            #endregion
        }
Пример #3
0
        public async Task <string> SignInAsync(LoginModel model)
        {
            BaseResult result = new BaseResult();

            #region 判断验证码
            if (!ValidateCaptchaCode(model.CaptchaCode))
            {
                result.ResultCode = ResultCodeAddMsgKeys.SignInCaptchaCodeErrorCode;
                result.ResultMsg  = ResultCodeAddMsgKeys.SignInCaptchaCodeErrorMsg;
                return(JsonHelper.ObjectToJSON(result));
            }
            #endregion
            #region 判断错误次数
            var ErrorTimes = HttpContext.Session.GetInt32(ManagerSignInErrorTimes);
            if (ErrorTimes == null)
            {
                HttpContext.Session.SetInt32(ManagerSignInErrorTimes, 1);
                ErrorTimes = 1;
            }
            else
            {
                HttpContext.Session.SetInt32(ManagerSignInErrorTimes, ErrorTimes.Value + 1);
            }
            if (ErrorTimes > MaxErrorTimes)
            {
                result.ResultCode = ResultCodeAddMsgKeys.SignInErrorTimesOverTimesCode;
                result.ResultMsg  = ResultCodeAddMsgKeys.SignInErrorTimesOverTimesMsg;
                return(JsonHelper.ObjectToJSON(result));
            }
            #endregion
            #region 再次属性判断
            LoginModelValidation validation = new LoginModelValidation();
            ValidationResult     results    = validation.Validate(model);
            if (!results.IsValid)
            {
                result.ResultCode = ResultCodeAddMsgKeys.CommonModelStateInvalidCode;
                result.ResultMsg  = results.ToString("||");
            }
            #endregion

            model.Ip = HttpContext.GetClientUserIp();
            var manager = _service.SignIn(model);
            if (manager == null)
            {
                result.ResultCode = ResultCodeAddMsgKeys.SignInPasswordOrUserNameErrorCode;
                result.ResultMsg  = ResultCodeAddMsgKeys.SignInPasswordOrUserNameErrorMsg;
            }
            else if (manager.IsLock)
            {
                result.ResultCode = ResultCodeAddMsgKeys.SignInUserLockedCode;
                result.ResultMsg  = ResultCodeAddMsgKeys.SignInUserLockedMsg;
            }
            else
            {
                var claims = new List <Claim>
                {
                    new Claim(ClaimTypes.Name, manager.UserName),
                    new Claim(ClaimTypes.MobilePhone, manager.Mobile),
                    new Claim(ClaimTypes.Role, manager.RoleId.ToString()),
                    new Claim("Id", manager.Id.ToString()),
                    new Claim("NickName", manager.NickName),
                    new Claim("Email", manager.Email),
                    new Claim("LoginCount", manager.LoginCount.ToString()),
                    new Claim("LoginLastIp", manager.LoginLastIp),
                    new Claim("LoginLastTime", manager.LoginLastTime?.ToString("yyyy-MM-dd HH:mm:ss")),
                };
                var claimsIdentity = new ClaimsIdentity(
                    claims, CookieAuthenticationDefaults.AuthenticationScheme);
                await HttpContext.SignInAsync(
                    CookieAuthenticationDefaults.AuthenticationScheme,
                    new ClaimsPrincipal(claimsIdentity));
            }
            return(JsonHelper.ObjectToJSON(result));
        }