0

我正在尝试将 ReCaptcha 放入注册表单(ASP.NET MVC)。

@Html.Raw(Html.GenerateCaptcha()) 

我已将 ReCaptcha 中的私钥和公钥输入到 Web.config 中:

<appSettings>
    <add key="ReCaptchaPrivateKey" value="6LcMwPESAAAAAFyxyxyxyxyxyxy"/>
    <add key="ReCaptchaPublicKey" value="6LcMwPESAAAAAGVyxyxyxyxyxyxy"/>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>

但它给出了这个错误:

输入错误:k:站点密钥格式无效

如何解决这个问题呢?

PS。我在这里阅读了 CoffeeCup 解决方案。但在 ASP.NET 中无法以这种方式解决问题。

4

1 回答 1

3

使用此 nuget 扩展 - Recaptcha for .NET,可以在一分钟内轻松实现带有 ASP.NET MVC 的 Recaptcha

我能够设置一个并在此处发布了相同的博客 -在您的 ASP.NET MVC 项目中实现 reCAPTCHA

以下是相同的摘要......

首先,您注册并获取您的公钥和私钥。(这一步你似乎已经完成了)

使用 NuGet 包管理器安装“Recaptcha for .NET”,确保下载下面屏幕截图中显示的那个,因为还有很多同名的。 http://yassershaikh.com/wp-content/uploads/2014/04/step2-recaptcha-nuget-aspnetmvc.png

将 Recaptcha 控件添加到您的 MVC 视图

打开您的Views/Account/Register视图并将其添加到页面顶部

@using Recaptcha.Web.Mvc

并使用以下剃须刀代码包含 recaptcha 表单

<li>
    @Html.Label("Some label to go here")
    @Html.Recaptcha()
</li>

在您的控制器/操作中验证用户对 Recaptcha Challenge 的响应

下一步是在你的控制器/动作中配置recaptcha ,首先在你的控制器文件中导入以下命名空间(本例为AccountController)

using Recaptcha.Web;
using Recaptcha.Web.Mvc;

接下来,转到您的注册方法并使用以下代码

RecaptchaVerificationHelper recaptchaHelper = this.GetRecaptchaVerificationHelper();

if (String.IsNullOrEmpty(recaptchaHelper.Response))
{
    ModelState.AddModelError("", "Captcha answer cannot be empty.");
    return View(model);
}

RecaptchaVerificationResult recaptchaResult = recaptchaHelper.VerifyRecaptchaResponse();

if (recaptchaResult != RecaptchaVerificationResult.Success)
{
    ModelState.AddModelError("", "Incorrect captcha answer.");
}

这是我使用上述代码设置的注册页面上的recaptcha 表单的外观。

在此处输入图像描述

希望这可以帮助。

于 2014-04-16T09:53:32.257 回答