如何在ASP.NET MVC中使用验证码

21
有人能告诉我如何在asp.net mvc中使用验证码吗?需要下载控件吗?

1
这篇博客文章向您展示如何实现它。 - Perpetualcoder
另一篇博客文章:在thenullreference.com这里 - Greg Roberts
我尝试了这篇博客中提到的方法,但图像仍无法显示,请告诉我其他解决方案。我想只使用验证码,而不是reCAPTCHA。 - mary
在问题中放一些代码示例,也许我们可以帮忙。 - Perpetualcoder
请查看此链接http://devlicio.us/blogs/derik_whittaker/archive/2008/12/02/using-recaptcha-with-asp-net-mvc.aspx,一定会有所帮助。 - coolguy97
1
可能是什么与ASP.NET MVC兼容的CAPTCHA?的重复问题。 - Gabe
2个回答

36

希望我来得及为您提供建议...

介绍 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>    

步骤 2:在你的 web.config 文件中添加新的命名空间

<namespaces>
  <add namespace="MvcReCaptcha.Helpers"/>
</namespaces>

步骤3:在你的视图中实现逻辑,以实际渲染验证码控件

<%= Html.GenerateCaptcha() %>

步骤4:实现控制器动作,用于处理表单提交和验证码验证。

[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();
  }
}
祝你好运!

1
非常彻底。我已经尝试过并且完美地运行了。现在我被困在net 3.5上,因此Microsoft.web.helpers与net 3.5不兼容,这就是解决方案。 - tugberk
6
对于.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。其他一切都相同。 - pbz
1
如果您正在使用SSL,您还需要前往http://code.google.com/apis/recaptcha/docs/aspnet.html下载最新的二进制文件,并替换MvcReCaptcha项目中的recaptcha.dll程序集。 - pbz
你也可以使用NuGet获取.NET包,然后只需添加应用程序设置(密钥),其他所有内容都会自动工作。 - Pawel Krakowiak
1
@PawelKrakowiak Nuget包的名称是什么? - DROP TABLE users
显示剩余2条评论

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") %>

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

[CaptchaValidation("captcha")]

在验证码方面,Recaptcha只是一个选项(事实上,Stack Overflow选择了这个选项!)


NuGet Google reCAPTCHA V2 适用于 MVC 4 和 5 - Sender

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接