回答
我使用Google ReCaptcha,它工作得很好,实施起来非常简单。
请注意,如果您使用的是HTTPS确保您有该DLL的当前版本(1.0.5.0在这个时候)
您需要创建在谷歌的Recaptcha网站的帐户,并得到一组的公钥和私钥。键添加到您的Web项目主要web.config文件:
<appSettings>
<add key="webpages:Version" value="1.0.0.0"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
<add key="ReCaptchaPrivateKey" value="put your private key value here" />
<add key="ReCaptchaPublicKey" value="put your public key value here" />
</appSettings>
现在使用的NuGet和安装的reCAPTCHA插件.NET
然后,转到您的web.config文件你的意见文件夹内。加入这一行:
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="Recaptcha"/>
</namespaces>
然后,在你认为你要显示的验证码,在你的文件的顶部添加using语句
@using Recaptcha;
然后添加到您的观点:
<div class="editor-label">
Are you a human?
</div>
<div class="editor-field">
@Html.Raw(Html.GenerateCaptcha("captcha", "clean"))
@Html.ValidationMessage("captcha")
</div>
在你的控制器动作,你将需要修改签名就可以接受验证码结果:
[HttpPost]
[RecaptchaControlMvc.CaptchaValidator]
public ActionResult ForgotPassword(CheckUsernameViewModel model, bool captchaValid, string captchaErrorMessage) {
if (!Membership.EnablePasswordReset)
throw new Exception("Password reset is not allowed\r\n");
if(ModelState.IsValid) {
if(captchaValid) {
return RedirectToAction("AnswerSecurityQuestion", new { username = model.Username });
}
ModelState.AddModelError("", captchaErrorMessage);
}
return View(model);
}
以下这些步骤使我可以在多个页面上实施验证码并且工作顺利。请注意,在控制器操作的参数名称必须正确命名为:
bool captchaValid, string captchaErrorMessage
如果你改变了这些参数的名字,你会在运行时得到一个错误,当您的形式回发到控制器动作。
什么是公钥/私钥值?我应该放什么? – updev 2012-03-16 16:10:12
@updev - 你可以在Google的ReCaptcha页面上注册他们:http://www.google.com/recaptcha/ – 2013-01-03 18:24:21
@ cd-smith:当遵循您的指导原则将Recaptcha添加到MVC4时,我遇到了一个奇怪的行为项目;当我提交表单时,控制器动作会被调用两次,首先使用正确的Recaptcha结果,然后再次发生错误结果!你有类似的东西吗? – ThomasWeiss 2013-02-04 11:18:10
我会推荐使用蜜罐Captcha。您的用户的体验更好。有一个脱颖而出ASP.NET MVC这里http://nuget.org/packages/SimpleHoneypot.MVC
PM> Install-Package SimpleHoneypot.MVC4
有关于如何得到它在这里一个Wiki:https://github.com/webadvanced/Honeypot-MVC/wiki 刚开始脱离与Getting Started
部分。
你可以阅读更多关于蜜罐验证码在这里的总体思路:http://haacked.com/archive/2007/09/11/honeypot-captcha.aspx
- 1. 在Angular2中实现Google ReCaptcha
- 2. 无法在Rails 4.2应用程序中实现recaptcha gem选项
- 3. 如何在Android应用程序中实现Google TagManager
- 4. 如何将Google的reCAPTCHA整合到React Native应用程序中?
- 5. 在WPF应用程序中使用reCaptcha
- 6. 在Asp.net Web应用程序中实现Google Sheet API
- 7. 在原生BlackBerry应用程序中实现Google Analytics
- 8. Google People API在Android应用程序中的实现
- 9. MVC3应用程序中的CIM - 如何实例化ServiceSoap?
- 10. AuthenticationManager实现如何在SpringBoot应用程序中实例化
- 11. 如何在我的应用程序中实现google map5功能android
- 12. 如何在我的应用程序中实现Google语音输入?
- 13. 将reCaptcha实现为Rails 2.3.12应用
- 14. MVC3中的ASync Recaptcha
- 15. 如何实现应用程序协议
- 16. 如何实现SQLite到应用程序?
- 17. 如何实现应用程序更新?
- 18. 如何实现提醒应用程序?
- 19. 如何在Android应用程序中实施Google的DoubleClick Ads?
- 20. 在iphone应用程序中实现应用程序细化
- 21. 在Java应用程序中实现Growl
- 22. 在Android应用程序中实现Leadbolt
- 23. 在ASP.Net应用程序中实现HPKP
- 24. 在应用程序中实现聊天?
- 25. 如何实现Quartz.Net来为我的MVC3 Web应用程序安排任务?
- 26. 如何在android中使用senchatouch实现phonegap应用程序2
- 27. 如何使用MVC在iOS应用程序中实现设置
- 28. 如何在iOS中使用Braintree实现支付应用程序
- 29. 如何在我的应用程序中实现代码在iphone
- 30. 如何在WinForm应用程序中实现HTML中的搜索?
的Recaptcha? http://www.google.com/recaptcha – LukeH 2012-03-16 16:01:35
我会推荐使用蜜罐ReCaptcha。您的用户的体验更好。这里有一个ASP.NET MVC http://nuget.org/packages/SimpleHoneypot.MVC – Paul 2012-03-16 16:09:11
@Paul,你是否有如何实现蜜罐的例子? – updev 2012-03-16 18:37:45