代码之家  ›  专栏  ›  技术社区  ›  Noobie3001

如何使[AllowHtml]和[CaptchaVerify]一起工作?

  •  1
  • Noobie3001  · 技术社区  · 9 年前

    我被困在22号线上了。我有一个问题,那就是这两个属性不能协同工作。这个 [AllowHtml] 如果删除 [CaptchaVerify] 属性。

    我得到了

    潜在危险的请求。从中检测到表单值 客户

    例外

    我怎样才能绕过这一关?


    这是我的属性,应该允许html:

    [AllowHtml]
    [Required(ErrorMessage = "Please enter a comment.")]
    public string CommentText
    {
        get; set;
    }
    

    我的视图如下所示(在本例中我已将其截断):

    @using CaptchaMvc.HtmlHelpers
    
    @using (Html.BeginForm("Article", "Home", FormMethod.Post))
    {
        @Html.TextBoxFor(m => m.CommentText, new { @class = "form-control" })
        @Html.Captcha("Refresh", "Enter the phrase shown above", 4, "Captcha image is required.", false)
        <input type="submit" value="Post" />
    }
    

    我的控制器如下所示:

    [HttpPost]
    [CaptchaMvc.Attributes.CaptchaVerify("Captcha is not valid")]
    public async Task<ActionResult> Article(ArticleModel model)
    {
        // Check the captcha.
        if (ModelState["CaptchaInputText"] != null && ModelState["CaptchaInputText"].Errors.Count > 0)
        {
            ViewBag.CaptchaError = "Please fill in the text above";
        }
    
        // Rest of my action
    }
    
    2 回复  |  直到 9 年前
        1
  •  1
  •   Lucas Roselli    9 年前

    我下载了源代码,找到了解决方案。

    不幸的是,他们需要更改源代码 https://captchamvc.codeplex.com/workitem/11

    您可以下载源代码,并按照上面的链接进行更改,或者等待更新源代码。

        2
  •  0
  •   Community tomf    7 年前

    我仍在做一些研究,但目前我找到了这个解决方案,更改web配置:

    https://stackoverflow.com/a/17258129/3202657

    执行此更改将禁用所有表单请求验证,因此 我强烈不建议

    我也尝试添加一个全局过滤器,但没有成功:

      public static void RegisterGlobalFilters(GlobalFilterCollection filters)
      {
         filters.Add(new ValidateInputAttribute(false));
      }
    

    这个库是开源的,请尝试下载并调试代码