/// <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")); }
/// <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); }
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)); }