示例#1
0
        /// <summary>
        /// 生成验证码
        /// </summary>
        /// <returns></returns>
        public ActionResult ShowCaptcha()
        {
            var captcha = CaptchaUtility.Generate(6);

            Session["captcha"] = captcha;
            byte[] buff = CaptchaUtility.Draw(captcha);
            return(File(buff, "image/jpeg"));
        }
示例#2
0
        /// <summary>
        /// 输出验证码
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <param name="htmlHelper"></param>
        /// <param name="scenarios">使用场景</param>
        /// <param name="showCaptchaImage">默认是否显示验证码图片(仅针对验证码图片可以不立即显示的情况)</param>
        /// <param name="templateName">模板名称</param>
        /// <returns></returns>
        public static MvcHtmlString Captcha <TModel>(this HtmlHelper <TModel> htmlHelper, VerifyScenarios scenarios = VerifyScenarios.Post, bool showCaptchaImage = false, string templateName = "Captcha")
        {
            if (!CaptchaUtility.UseCaptcha(scenarios))
            {
                return(MvcHtmlString.Empty);
            }
            ICaptchaManager captchaManager = DIContainer.Resolve <ICaptchaManager>();
            MvcHtmlString   captchaText    = captchaManager.GenerateCaptcha(htmlHelper, showCaptchaImage);

            return(htmlHelper.EditorForModel(templateName, new { CaptchaText = captchaText }));
        }
        public Kobelco.ContactRequest PostRequest(ContactRequestDTO dto)
        {
            CaptchaUtility captchaUtility  = new CaptchaUtility();
            string         recaptchaSecret = ConfigurationManager.AppSettings["recaptchaSecretKey"];

            captchaUtility.ValidateCaptcha(dto.CaptchaResponse, recaptchaSecret);

            ContactRequestDataLogic dataLogic = new ContactRequestDataLogic();

            Kobelco.ContactRequest entity = dataLogic.SaveContactUsRequest(dto);
            dataLogic.SendNotificationEmail(dto);

            return(entity);
        }
        public static void InitializeFor(this BookingModel model, int?eventId)
        {
            var isActiveEvent = eventId.HasValue && Database.Instance.IsActiveEventId(eventId.Value);

            model.Captcha = CaptchaUtility.GenerateAndStoreInSession();
            model.Events  = Database.Instance.GetActiveEvents();
            model.CalendarModel.ShowEventSelectionMessage = !isActiveEvent;

            if (isActiveEvent)
            {
                var date = CalendarUtility.CalculateFirstFreeBookingDate(eventId.Value);

                model.CalendarModel.InitializeFor(date, eventId.Value);
            }
        }
        public IEnumerable <ValidationResult> Validate(ValidationContext validationContext)
        {
            CaptchaUtility.Captcha captcha;
            var results    = new List <ValidationResult>();
            var hasCaptcha = CaptchaUtility.TryGetFromSession(out captcha);

            if (!CaptchaResponse.HasValue || !hasCaptcha || CaptchaResponse != captcha.Solution)
            {
                results.Add(new ValidationResult(Strings.Public.InputErrorCaptcha, new[] { nameof(CaptchaResponse) }));
            }

            if (!results.Any())
            {
                results.Add(ValidationResult.Success);
            }

            return(results);
        }
示例#6
0
        public async Task <IActionResult> ManageLogin(LoginModel model)
        {
            var resutl = TryValidateModel(model);

            if (!ModelState.IsValid)
            {
                model.Password = string.Empty;
                return(View(model));
            }
            var loginStatus = ViewData.Get <UserLoginStatus>("UserLoginStatus", UserLoginStatus.Success);

            if (loginStatus == UserLoginStatus.CapCode)
            {
                ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, "验证码错误,请重新输入!");
                return(View(model));
            }

            User user = model.AsUser();

            //首先验证用户名匹配密码
            loginStatus = membershipService.ValidateUser(user.UserName, user.Password);
            if (loginStatus == UserLoginStatus.InvalidCredentials)
            {
                //不匹配,验证邮箱匹配密码
                User userEmail = userService.FindUserByEmail(user.UserName);
                if (userEmail != null)
                {
                    user        = userEmail as User;
                    loginStatus = membershipService.ValidateUser(userEmail.UserName, model.Password);
                }
                if (loginStatus == UserLoginStatus.InvalidCredentials)
                {
                    //不匹配,验证手机号码匹配密码
                    User userMobile = userService.FindUserByMobile(user.UserName);
                    if (userMobile != null)
                    {
                        user        = userMobile as User;
                        loginStatus = membershipService.ValidateUser(userMobile.UserName, model.Password);
                    }
                }
            }
            else
            {
                //匹配成功获取完整用户
                user = userService.GetFullUser(user.UserName);
            }



            // 不匹配就提示账户或密码错误
            if (loginStatus == UserLoginStatus.InvalidCredentials)
            {
                ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, "帐号或密码错误,请重新输入!");
            }
            else if (loginStatus == UserLoginStatus.NotActivated)
            {
                ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, "账号未激活,请等待激活!");
            }
            else if (loginStatus == UserLoginStatus.Banned)
            {
                ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, "账号被封禁,请联系管理员!");
            }
            // 匹配成功
            else if (loginStatus == UserLoginStatus.Success)
            {
                CaptchaUtility.ResetLimitTryCount(VerifyScenarios.Login);
                //验证此账号是否有访问后台权限
                if (user.IsAllowEntryManager())
                {
                    var identity = new ClaimsIdentity(new[] {
                        new Claim(ClaimTypes.Sid, user.UserId.ToString()),
                        new Claim(ClaimTypes.Name, user.UserName)
                    }, "Forms");
                    var principal = new ClaimsPrincipal(identity);
                    await HttpContext.Authentication.SignInAsync("Sexy.Cookie", principal, new AuthenticationProperties
                                                                 { IsPersistent = true, AllowRefresh = false, ExpiresUtc = DateTime.UtcNow.AddMinutes(30) });

                    HttpContext.Session.Set <User>(user.UserId.ToString(), user);
                }
                else
                {
                    ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, "此账号无权限访问后台!");
                    return(View(model));
                }

                string redirectUrl = null;
                if (!string.IsNullOrEmpty(model.ReturnUrl))
                {
                    redirectUrl = model.ReturnUrl;
                }
                else
                {
                    redirectUrl = NavigationUrls.Instance().ManageHome();
                }
                return(Redirect(redirectUrl));
            }
            return(View(model));
        }