如何在asp.net mvc中使用验证码

mar*_*ary 21 asp.net-mvc captcha

谁能告诉我如何在asp.net mvc中使用验证码?有没有必要为它下载任何控件?

Max*_*sky 35

希望我把两分钱放到......还为时不晚

介绍MvcReCaptcha

尝试在我的第一个ASP.NET MVC站点上实现CAPTCHA验证时,我遇到了同样的问题.在发现了许多库之后,我发现似乎(现在看来)最简单有效的库:MvcReCaptcha.从那时起,我将这个库用于我的所有ASP.NET MVC站点.

在实现MvcReCaptcha之后,它会在您的视图上安全地生成CAPTCHA,并提供一个布尔值,表明验证是否对该操作成功.


使用说明

以下是从项目下载和引用MvcReCaptcha DLL 后实现它的方法(从MvcReCaptcha主页复制的说明):

在ASP.NET MVC中使用ReCaptcha:

现在,在您的Asp.Net MVC网站上设置ReCaptcha非常容易.

注册reCaptcha,http: //recaptcha.net/whyrecaptcha.html

如何使用:

步骤1:将您的公钥和私钥添加到appsettings部分的web.config文件中

<appSettings>
  <add key="ReCaptchaPrivateKey" value=" -- PRIVATE_KEY -- " />
  <add key="ReCaptchaPublicKey" value=" -- PUBLIC KEY -- " />
</appSettings>    
Run Code Online (Sandbox Code Playgroud)

第2步:向web.config添加新的命名空间

<namespaces>
  <add namespace="MvcReCaptcha.Helpers"/>
</namespaces>
Run Code Online (Sandbox Code Playgroud)

第3步:在视图中实现逻辑以实际呈现Captcha控件

<%= Html.GenerateCaptcha() %>
Run Code Online (Sandbox Code Playgroud)

第4步:实现将处理表单提交和Captcha验证的Controller Action

[CaptchaValidator]
[AcceptVerbs( HttpVerbs.Post )]
public ActionResult CreateComment( Int32 id, bool captchaValid )
{
  if (!captchaValid)
  {
      ModelState.AddModelError("_FORM", "You did not type the verification word correctly. Please try again.");
  }
  else
  {
      // If we got this far, something failed, redisplay form
      return View();
  }
}
Run Code Online (Sandbox Code Playgroud)

祝好运!

  • 对于.NET 4.0 MVC 3 Razor,您需要在解决方案中导入MvcReCaptcha项目,将目标更改为.NET 4,删除System.Web.Mvc引用(默认情况下引用旧版本),添加System.Web .mvc v3.0.0.0,重建并引用这个项目而不是项目捆绑的DLL.在你的Razor文件中添加@ Html.Raw(Html.GenerateCaptcha())或者你可以修改GenerateCaptcha以返回MvcHtmlString.其他一切都是一样的. (6认同)

Fen*_*ton 2

如果您不喜欢编写自己的验证码(谁喜欢!),您可以使用验证码库,例如:

http://www.coderjournal.com/2008/03/aspnet-mvc-captcha/

使用验证码库,您可以将 dll 添加到项目中,并使用验证码 API 来显示和验证验证码图像和输入。

显示验证码:

<label for="captcha">Enter <%= Html.CaptchaImage(50, 180) %> Below</label><br />
<%= Html.TextBox("captcha") %>
Run Code Online (Sandbox Code Playgroud)

然后确保将 Captcha 属性添加到您的方法中:

[CaptchaValidation("captcha")]
Run Code Online (Sandbox Code Playgroud)

Recaptcha 只是验证码的一种选择(事实上,这是 Stack Overflow 选择的选项!)