ASP.NET MVC CAPTCHA实现

use*_*591 6 asp.net asp.net-mvc captcha asp.net-mvc-4

我试图在我的应用程序中的页面的部分视图上实现Captcha.我通过web.config作为控件来验证验证码.我在这个论坛帖子中使用了GenericHandler和Class文件:http://forums.asp.net/t/1871186.aspx/1

如果我使用简单的输入标签,如何引用用户的输入?我应该使用HtmlHelper吗?

           <div class="captcha">
                <rhcap:Captcha ID="Captcha1" runat="server"></rhcap:Captcha>
                <input type="text" id="UserCaptchaText"><input/>
                <%= Html.TextAreaFor(m => m.UserCaptcha) %>
            </div>

            <%if(Captcha1.Text != /* How can get the users input here?*/ ) {
                  //display error

            }else{
                   //proceed
            }%>
Run Code Online (Sandbox Code Playgroud)

Eri*_*sch 15

使用NuGet并安装Recaptcha for .NET(也支持MVC)

http://nuget.org/packages/RecaptchaNet/

文档在网站上:

http://recaptchanet.codeplex.com/

还有其他验证码:

http://captchamvc.codeplex.com/

编辑:

该项目已移至GitHub https://github.com/tanveery/recaptcha-net

  • @ user1977591 - 嗯,这是一个很好的论点;) (2认同)

Sen*_*der 10

NuGet 谷歌reCAPTCHA V2 for MVC 4和5

Web.config文件位于web.config文件的appSettings部分,按如下方式添加键:

<appSettings>
   <add name="reCaptchaPublicKey" value="Your site key" />
   <add name="reCaptchaPrivateKey" value="Your secret key" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

在您的视图中添加Recaptcha.

@using reCAPTCHA.MVC
@using (Html.BeginForm())
{
    @Html.Recaptcha()
    @Html.ValidationMessage("ReCaptcha")
    <input type="submit" value="Register" />
}
Run Code Online (Sandbox Code Playgroud)

验证用户的响应.

[HttpPost]
[CaptchaValidator]
public ActionResult Index(RegisterModel registerModel, bool captchaValid)
{
    if (ModelState.IsValid)
    {
    }
    return View(registerModel);
}
Run Code Online (Sandbox Code Playgroud)

编辑:

您还应该在头标记中添加它,否则您可能会看到不正确的验证码

<script src="https://www.google.com/recaptcha/api.js" async defer></script>
Run Code Online (Sandbox Code Playgroud)