4

首先让我说我正在使用 WebMatrix。我正在尝试将 reCAPTCHA 插件添加到我的 ASP.NET 网站。我查看了他们的 ASP.NET 插件的快速入门文档。这是他们示例的一部分:

<%@ Page Language="VB" %>
<%@ Register TagPrefix="recaptcha" Namespace="Recaptcha" Assembly="Recaptcha" %>
<script runat="server">
    Sub btnSubmit_Click(ByVal sender As Object, ByVal e As EventArgs)
        If Page.IsValid Then
            lblResult.Text = "You Got It!"
            lblResult.ForeColor = Drawing.Color.Green
        Else
            lblResult.Text = "Incorrect"
            lblResult.ForeColor = Drawing.Color.Red
        End If
    End Sub
</script>
<html>
  <body>
    <form runat="server">
      <asp:Label Visible=false ID="lblResult" runat="server" />
      <recaptcha:RecaptchaControl
          ID="recaptcha"
          runat="server"
          Theme="red"
          PublicKey="your_public_key"
          PrivateKey="your_private_key"
        />

      <!-- ... -->
    </form>
  </body>
</html>

我知道我不需要“<%@ Page Language="VB" %>”,但我对 Razor 还是很陌生,所以我将如何添加对 reCAPTCHA 程序集的引用并在其中显示插件我的页面?我怀疑我是否可以将此行用作程序集参考:

<%@ Register TagPrefix="recaptcha" Namespace="Recaptcha" Assembly="Recaptcha" %>

另外,我可以将<asp:???>来自 reCAPTCHA 程序集的标签和标签放在我的 CSHTML 文档中吗?这在 WebMatrix 网站中是否有效:

<recaptcha:RecaptchaControl
    ID="recaptcha"
    runat="server"
    Theme="red"
    PublicKey="your_public_key"
    PrivateKey="your_private_key"
  />

基本上我问的是如何将 reCAPTCHA 插件添加到 Razor C# 文件。

4

4 回答 4

4

Microsoft.Web.Helpers 库中包含一个控件。基本用法是@Microsoft.Web.Helpers.ReCaptcha.GetHtml(publicKey: "...")

客户端(剃须刀)

@using (Html.BeginForm("Captcha", "Home", FormMethod.Post))
{
    @Microsoft.Web.Helpers.ReCaptcha.GetHtml(publicKey: "...")    
    <input type="submit" value="submit"/>
}

在服务器端

public ActionResult Captcha()
{
    var valid = Microsoft.Web.Helpers.ReCaptcha.Validate(privateKey: "...");
    if (valid)
    {
        return RedirectToAction("Contact");
    }
    else
    {
        ModelState.AddModelError("Captcha", "Bad input in captcha");
        return View("Index");
    }            
}
于 2013-02-20T20:40:20.523 回答
2

到目前为止,这些都不起作用。OP 使用 WebMatrix 和 Razer,而上面/下面的示例适用于 MVC 和常规 ASP.NET。

WebMatrix IDE 在 NuGet 中包含一个用于 reCAPTCHA 的包,但没有关于如何使用它的说明。

编辑:以下是在 WebMatrix 中使用 reCAPTCHA 的说明

http://www.asp.net/web-pages/tutorials/security/using-a-catpcha-to-prevent-automated-programs-%28bots%29-from-using-your-aspnet-web-site

简而言之,您需要打开 NuGet,安装 MS Webhelper 库和 reCAPTCHA。然后按照建议添加/编辑 _AppStart.cshtml 并检查页面上的示例代码。

于 2013-12-17T05:53:43.463 回答
0

在 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="Your private key here" />
     <add key="ReCaptchaPublicKey" value="Your public key here" />
 </appSettings>

在查看文件夹\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>

在 cshtml 中

把这个放在上面

@using Recaptcha;

把它放在你想显示的地方

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

在控制器中

    [HttpPost]
    [RecaptchaControlMvc.CaptchaValidator]
    public ActionResult Index(Home home, bool captchaValid, string captchaErrorMessage)
    {
        if (ModelState.IsValid)
        {
            if (captchaValid)
            {
                //return RedirectToAction("AnswerSecurityQuestion", new { username = model.Username });
                return View(home);
            }
            ModelState.AddModelError("", captchaErrorMessage);
            home.recap_errorRaise = captchaErrorMessage;
        }
        return View(home);
    }
于 2013-03-11T10:50:22.813 回答
0

将来自https://developers.google.com/recaptcha/docs/language的语言值放入资源文件中。示例(@Resource.CaptchaLanguage 值 = 'en')

<script src="https://www.google.com/recaptcha/api.js?hl=@Resource.CaptchaLanguage"></script>
于 2019-06-10T14:00:08.427 回答