Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Adding reCAPTCHA to ASP.NET MVC

0.00/5 (No votes)
15 Oct 2010 1  
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;

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here