ASP.NET Core Captcha Overview

Telerik UI for ASP.NET Core Ninja image

The Captcha is part of Telerik UI for ASP.NET Core, a professional grade UI library with 110+ components for building modern and feature-rich applications. To try it out sign up for a free 30-day trial.

The Telerik UI Captcha TagHelper and HtmlHelper for ASP.NET Core are server-side wrappers for the Kendo UI Captcha widget.

The Telerik UI Captcha for ASP.NET Core is a security measure that prevents automated spam from performing tasks such as form submissions in your ASP.NET Core application. The widget generates distorted images of letters and numbers that are easily decipherable to humans, but not to automated programs (spam bots).

Basic Configuration

The following example demonstrates the basic configuration of the Captcha component. For the full server-side implementation, consider the Validation article.

    @(Html.Kendo().Captcha()
        .Name("Captcha")
        .Handler(handler => handler.Action("Reset", "Captcha")) // endpoint to return the CAPTCHA 
        .AudioHandlerFunction("audioHandler") // handler to fetch audio representation of the CAPTCHA (if needed)
        .ValidationHandler(handler => handler.Action("Validate", "Captcha")) // enpoint to validate the CAPTCHA
    )
    <kendo-captcha name="Captcha">
        <handler url="@Url.Action("Reset", "Captcha")" />
        <audio-handler function-handler="audioHandler" />
        <validation-handler url="@Url.Action("Validate", "Captcha")" />
    </kendo-captcha>
    <script>
        function audioHandler(args) {
            args.success("@Url.Action("Audio")?captchaId=" + args.data.captchaId); 
        }
    </script>
public ActionResult Reset()
{
    CaptchaImage newCaptcha = SetCaptchaImage();

    return Json(new CaptchaModel
    {
        Captcha = "./shared/UserFiles/captcha/" + newCaptcha.UniqueId + ".png",
        CaptchaID = newCaptcha.UniqueId
    });
}

public ActionResult Validate(CaptchaModel model)
{
    string text = GetCaptchaText(model.CaptchaID);

    return Json(text ==  model.Captcha.ToUpperInvariant());
}

private string GetCaptchaText(string captchaId)
{
    string text = HttpContext.Session.GetString("captcha_" + captchaId);

    return text;
}

Functionality and Features

  • Captcha Server-side Provider—You can implement a server-side provider for the Captcha component.
  • Validation—The Captcha offers validation capabilities.
  • Audio Content—You can present your own audio content to the user.
  • Accessibility—The Captcha and the entire Telerik toolset implement convenient accessibility features.

Events

For a complete example on the Captcha's events, refer to the demo on using the events of the Captcha.

Referencing Existing Instances

To reference an existing Captcha instance, use the jQuery.data() configuration option. Once a reference is established, use the Captcha client-side API to control its behavior.

    // Place the following after your Telerik UI Captcha for ASP.NET Core declaration.
    <script>
        $(document).ready(function() {
            // The Name() of the Captcha is used to get its client-side instance.
            var captcha = $("#Captcha").data("kendoCaptcha");
        });
    </script>

Next Steps

See Also

In this article