gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:53:04 25 4
gpt4 key购买 nike

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

如何定制它?

最佳答案

我使用 Google ReCaptcha,它运行良好,而且实现起来非常简单。

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

您需要在 Google Recaptcha 网站上创建一个帐户并获取一组公钥和私钥。将 key 添加到您的 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 并安装适用于 .NET 的 reCAPTCHA 插件

然后,转到 VIEWS 文件夹内的 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;

然后将其添加到您的 View 中:

<div class="editor-label">
Are you a human?
</div>
<div class="editor-field">
@Html.Raw(Html.GenerateCaptcha("captcha", "clean"))
@Html.ValidationMessage("captcha")
</div>

在您的 Controller 操作中,您需要修改签名以接受验证码结果:

[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);
}

按照这些步骤,我可以在多个页面上实现验证码,并且工作顺利。请注意, Controller 操作上的参数名称必须正确命名:

bool captchaValid, string captchaErrorMessage

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

关于asp.net - 如何在 MVC3 应用程序中实现 Google reCaptcha?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9740402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com