Asp.net 如何在MVC3应用程序中实现Google reCaptcha?

Asp.net 如何在MVC3应用程序中实现Google reCaptcha?,asp.net,asp.net-mvc,asp.net-mvc-3,c#-4.0,recaptcha,Asp.net,Asp.net Mvc,Asp.net Mvc 3,C# 4.0,Recaptcha,有人能解释一下如何在我的MVC3应用程序中使用像stackoverflow这样的reCaptcha功能吗 您如何定制它呢?我使用Google ReCaptcha,它工作得很好,实现起来也很简单 请注意,如果您使用的是Https,请确保您拥有当前版本的dll(此时为1.0.5.0) 您需要在Google Recaptcha站点上创建一个帐户,并获得一组公钥和私钥。将密钥添加到web项目主web.config文件: <appSettings> <add key="webpa

有人能解释一下如何在我的MVC3应用程序中使用像stackoverflow这样的reCaptcha功能吗


您如何定制它呢?

我使用Google ReCaptcha,它工作得很好,实现起来也很简单

请注意,如果您使用的是Https,请确保您拥有当前版本的dll(此时为1.0.5.0)

您需要在Google 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>
然后将其添加到您的视图中:

<div class="editor-label">
    Are you a human?
</div>
<div class="editor-field">
    @Html.Raw(Html.GenerateCaptcha("captcha", "clean"))
    @Html.ValidationMessage("captcha")
</div>
按照这些步骤,我可以在几页上实现captcha,并且工作顺利。请注意,控制器操作上的参数名称必须正确命名:

bool captchaValid, string captchaErrorMessage

如果您更改了这些参数名称,当表单发回控制器操作时,您将在运行时收到一个错误。

我建议使用蜜罐验证码。用户的体验要好得多。这里有一个ASP.NET MVC

这里有一个关于如何获取它的WiKi: 只需从
入门
部分开始


您可以在此处阅读更多关于蜜罐验证码的一般概念:

Recaptcha?我建议你使用蜜罐。用户的体验要好得多。这里有一个关于ASP.NET MVC的例子@Paul,你有如何实现蜜罐的例子吗?@updev这里有一个例子:如果你有任何问题,请告诉我!适用于MVC4和MVC5的NuGet Google reCAPTCHA V2——公钥/私钥值是多少?我应该在那里放些什么?@updev-你可以在谷歌的ReCaptcha页面上注册它们:@cd smith:我在遵循你的指导原则将ReCaptcha添加到MVC4项目时有一个奇怪的行为;当我提交表单时,控制器操作会被调用两次,第一次调用正确的Recaptcha结果,第二次调用错误结果!“你有没有遇到过类似的事情?”托马斯维斯没有,很抱歉,我从来没有遇到过类似的事情。但这听起来像是一种熟悉的情况。您是通过Ajax发布的吗?@cd smith感谢您的回复。不,这不是Ajax,所以它不是绑定/取消绑定问题。而且,只有将RecaptchaControlMvc.CAPTCHAVALIDATER属性应用于操作时,才会发生此情况。。。我将与Fiddler一起深入研究,看看对动作的第二次调用是来自浏览器还是内部调用。会让你知道的!
<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
PM> Install-Package SimpleHoneypot.MVC4