Adding reCAPTCHA to ASP.NET MVC
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 thenamespace
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
- Add the
RecaptchaControlMvc.CaptchaValidator
attribute to your controller. Also add parameters namedcaptchaIsValid
andcaptchaErrorMessage
. 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
andRecaptchaPrivateKey
- Set at Application Start:
RecaptchaControlMvc.PrivateKey = privKey; RecaptchaControlMvc.PublicKey = pubKey;
- Add to