BotDetect ASP.NET MVC CAPTCHA Integration Quickstart (BotDetect v3.0; deprecated)
1. Add a Reference to BotDetect
Both the BotDetect.dll
and BotDetect.Web.UI.Mvc.dll
assemblies should be referenced. They are included in the BotDetect installation.
2. Show a Captcha Challenge on the Form
In View code: import the BotDetect namespace, include BotDetect styles in page<head>
, create a MvcCaptcha
object and pass it to the Captcha HtmlHelper
:
@using BotDetect.Web.UI.Mvc; […] <link href="@BotDetect.Web.CaptchaUrls.Absolute.LayoutStyleSheetUrl" rel="stylesheet" type="text/css" /> </head> […] @{ MvcCaptcha sampleCaptcha = new MvcCaptcha("SampleCaptcha"); } @Html.Captcha(sampleCaptcha) @Html.TextBox("CaptchaCode")
3. Check User Input During Form Submission
Mark the protected Controller action with theCaptchaValidation
attribute to include Captcha validation in ModelState.IsValid
checks:
using BotDetect.Web.UI.Mvc; […] [HttpPost] [AllowAnonymous] [CaptchaValidation("CaptchaCode", "SampleCaptcha", "Incorrect CAPTCHA code!")] public ActionResult SampleAction(SampleModel model) { if (!ModelState.IsValid) { // TODO: Captcha validation failed, show error message } else { // TODO: captcha validation succeeded; execute the protected action }
4. Configure Your ASP.NET Application
Exclude BotDetect paths from ASP.NET MVC Routing:public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); // BotDetect requests must not be routed routes.IgnoreRoute("{*botdetect}", new { botdetect = @"(.*)BotDetectCaptcha\.ashx" });Update your application configuration (the
web.config
file):
<system.web> <httpHandlers> <!-- Register the HttpHandler used for BotDetect Captcha requests --> <add verb="GET" path="BotDetectCaptcha.ashx" type="BotDetect.Web.CaptchaHandler, BotDetect"/> </httpHandlers> <!-- Register a custom SessionIDManager for BotDetect Captcha requests --> <sessionState mode="InProc" cookieless="AutoDetect" timeout="20" sessionIDManagerType="BotDetect.Web.CustomSessionIdManager, BotDetect"/> </system.web> <system.webServer> <validation validateIntegratedModeConfiguration="false"/> <handlers> <!-- Register the HttpHandler used for BotDetect Captcha requests (IIS 7.0+) --> <remove name="BotDetectCaptchaHandler"/> <add name="BotDetectCaptchaHandler" preCondition="integratedMode" verb="GET" path="BotDetectCaptcha.ashx" type="BotDetect.Web.CaptchaHandler, BotDetect"/> </handlers> </system.webServer>
In-Depth ASP.NET MVC CAPTCHA Instructions and Explanations
Detailed ASP.NET MVC Captcha instructions and explanations can be found in the ASP.NET MVC Captcha integration how to guide.
Other BotDetect ASP.NET CAPTCHA Quickstarts
Please Note
The information on this page is out of date and applies to a deprecated version of BotDetect™ CAPTCHA (v3.0).
An up-to-date equivalent page for the latest BotDetect Captcha release (v4) is BotDetect v4 Captcha documentation index.
General information about the major improvements in the current BotDetect release can be found at the What's New in BotDetect v4.0 page.
Current BotDetect Versions
-
BotDetect ASP.NET CAPTCHA
2019-07-22v4.4.2 -
BotDetect Java CAPTCHA
2019-07-22v4.0.Beta3.7 -
BotDetect PHP CAPTCHA
2019-07-22v4.2.5