/// <summary> /// 执行Action时 /// </summary> /// <param name="filterContext"></param> public override void OnActionExecuting(ActionExecutingContext filterContext) { if (CaptchaUtility.UseCaptcha(scenarios, true)) { try { ICaptchaManager captchaManager = DIContainer.Resolve <ICaptchaManager>(); Controller controllerBase = filterContext.Controller as Controller; if (!captchaManager.IsCaptchaValid(filterContext)) { //controllerBase.ModelState.AddModelError("Captcha", CaptchaVerifyError); controllerBase.ViewData["UserLoginStatus"] = UserLoginStatus.CapCode; } else if (controllerBase.ModelState.IsValid) { //表单通过验证时,重设累计次数 //CaptchaUtility.ResetLimitTryCount(scenarios); //此处修改成登录成功,重设累计次数 } } catch { throw new Exception("检查验证码时,出现异常"); } } base.OnActionExecuting(filterContext); }
public static IHtmlContent Captcha <T>(this IHtmlHelper <T> htmlHelper, VerifyScenarios scenarios = VerifyScenarios.Post, bool showCaptchaImage = false, string templateName = "Captcha") { if (!CaptchaUtility.UseCaptcha(scenarios)) { return(HtmlString.Empty); } ICaptchaManager captchaManager = DIContainer.Resolve <ICaptchaManager>(); IHtmlContent captchaText = captchaManager.GenerateCaptcha(htmlHelper, showCaptchaImage); return(htmlHelper.EditorForModel(templateName, new { CaptchaText = captchaText })); }