将reCAPTCHA与ASP.NET MVC一起使用

我在WebForms应用程序中多次使用过reCAPTCHA 。 现在我想将它添加到ASP.NET MVC应用程序中。

我发现在RecaptchaControlMvc中似乎有一些好的代码,但令人难以置信的是,我无法找到关于如何使用此控件的单个段落或示例。

我已经在谷歌reCAPTCHA小组发布了但它已经死了。

任何人都可以指向一个使用此控件的示例,一个关于如何使用它的段落,或建议替代?

注意:我知道stackoverflow上有类似的问题,但我发现没有讨论如何使用这个控件。

这里有一些代码

你添加这样的属性:

[CaptchaValidator] [AcceptVerbs( HttpVerbs.Post )] public ActionResult SubmitForm( Int32 id, bool captchaValid ) { .. Do something here } 

您在视图中渲染validation码:

 <%= Html.GenerateCaptcha() %> 

这是这样的:

 public static string GenerateCaptcha( this HtmlHelper helper ) { var captchaControl = new Recaptcha.RecaptchaControl { ID = "recaptcha", Theme = "blackglass", PublicKey = -- Put Public Key Here --, PrivateKey = -- Put Private Key Here -- }; var htmlWriter = new HtmlTextWriter( new StringWriter() ); captchaControl.RenderControl(htmlWriter); return htmlWriter.InnerWriter.ToString(); } 

我可以为您提供一种简单的替代方法来使用google recaptcha。 在这里,您可以使用asp.net mvc找到有关Google新reCAPTCHA的完整参考资料

首先,您需要注册并生成Google reCAPTCHA API。 转到http://www.google.com/recaptcha,然后点击右上角的“获取reCAPTCHA”按钮

其次,在您的视图中编写HTML代码。 这里替换文字“ 你的网站密钥在这里

 @{ ViewBag.Title = "Index"; } 

Index

@using (Html.BeginForm("FormSubmit", "Home", FormMethod.Post)) {
}
@ViewBag.Message

第3个也是最后一个,编写validation谷歌reCaptcha的动作代码

 [HttpPost] public ActionResult FormSubmit() { //Validate Google recaptcha here var response = Request["g-recaptcha-response"]; string secretKey = "Your secret here"; var client = new WebClient(); var result = client.DownloadString(string.Format("https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}", secretKey, response)); var obj = JObject.Parse(result); var status = (bool)obj.SelectToken("success"); ViewBag.Message = status ? "Google reCaptcha validation success" : "Google reCaptcha validation failed"; //When you will post form for save data, you should check both the model validation and google recaptcha validation //EX. /* if (ModelState.IsValid && status) { }*/ //Here I am returning to Index page for demo perpose, you can use your view here return View("Index"); }