65.9K
CodeProject is changing. Read more.
Home

Adding reCAPTCHA to ASP.NET MVC

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.50/5 (4 votes)

Oct 15, 2010

CPOL
viewsIcon

26181

How to add reCAPTCHA to ASP.NET MVC

These are just a few steps, as the latest reCAPTCHA library has all the pieces you need for ASP.NET MVC:

  • Go to Get reCAPTCHA, which gives you the public and private keys you need to use reCAPTCHA with your site.
  • Download the latest .NET library at: http://code.google.com/p/recaptcha/downloads/list. Currently: dotnet-1.0.4.0.
  • Add <%= Html.GenerateCaptcha()%> to the form you want to protect with the reCAPTCHA. Naturally, you have to add the namespace for the extension to be recognized, some of the options:
    • Add the namespace to the web.config:
      <pages>
            <namespaces>
      ...
              <add namespace="Recaptcha" />
    • Add the namespace at the view:
      <%@ Import Namespace="Recaptcha" %>
    • Add your own extension method that wraps it. I changed the signature to return MvcHtmlString to prevent double encoding when using it with “<%:” instead of “<%=
      public static MvcHtmlString GenerateCaptcha(this HtmlHelper htmlHelper)
      {
          var html = Recaptcha.RecaptchaControlMvc.GenerateCaptcha(htmlHelper);
          return MvcHtmlString.Create(html);
      }
  • Add the RecaptchaControlMvc.CaptchaValidator attribute to your controller. Also add parameters named captchaIsValid and captchaErrorMessage. Just like:
    [RecaptchaControlMvc.CaptchaValidator]
    public ActionResult MyMethod(Something else, bool captchaValid, 
       string captchaErrorMessage)
    {
    // do something if (!captchaValid)
    }
  • Configure your keys. Some options:
    • Add to appsettings in the web.config, with entries named: RecaptchaPublicKey and RecaptchaPrivateKey
    • Set at Application Start:
      RecaptchaControlMvc.PrivateKey = privKey;
      RecaptchaControlMvc.PublicKey = pubKey;