About .NET, ASP.NET, MVC, C#, WPF, WCF and everything related to .NET and more.

Новая версия CaptchaMVC 2.3

Категории: Новости, Программирование

Сегодня, я выпустил новую версию библиотеки CaptchaMVC, которая поддерживает "intelligent captcha". Новая версия доступна по этой ссылке или через nuget. Я написал этот пост для демонстрации возможностей новой версии.

Что означает "intelligent" captcha?

Мы каждый день пользуемся интернетом и часто встречаемся с различными реализациями капчи. И мы, как пользователи, не любим, постоянно вводить защитные коды. Существует разные техники, для того, чтобы сделать капчу более дружественной для пользователя. Например, некоторые разработчики, создают “лишнее” поле для ввода и делают его скрытым для пользователя. Когда бот будет заполнять эту форму, он вероятнее всего, также заполнит и это поле.

Как это работает в CaptchaMvc?

CaptchaMvc предоставляет интерфейс IIntelligencePolicy, который отвечает за создание “intelligent captcha”.
Вот его определение:
public interface IIntelligencePolicy
{
    bool? IsValid(ControllerBase controller, IParameterContainer parameterContainer);

    ICaptcha MakeIntelligent(ICaptcha captcha, IParameterContainer parameterContainer);
}
CaptchaMvc предоставляет две реализации этого интерфейса:
  • FakeInputIntelligencePolicy – используется "лишнее" поле для создания “intelligent captcha”, то о чем я писал выше.
  • JavaScriptIntelligencePolicy– использует JavaScript, для создания “intelligent captcha”. Проверяет, включен ли у пользователя JavaScript.
По умолчанию используется FakeInputIntelligencePolicy, но вы легко можете изменить ее, используя этот код:
protected void Application_Start()
{
    //var captchaManager = (DefaultCaptchaManager) CaptchaUtils.CaptchaManager;

    //Default intelligence policy.
    //captchaManager.IntelligencePolicy = new FakeInputIntelligencePolicy(captchaManager);

    //JavaScript intelligence policy.
    //captchaManager.IntelligencePolicy = new JavaScriptIntelligencePolicy(captchaManager);
...
Для того чтобы сделать вашу капчу “intelligent captcha”, вы должны использовать расширяющий метод CaptchaMvc.HtmlHelpers.AsIntelligent(this ICaptcha, params ParameterModel[]).
Пример кода:
@Html.Captcha("Refresh", "Input", 5, "Is required field.", true).AsIntelligent()
@Html.MathCaptcha("Refresh", "Input", "Is required field.", true).AsIntelligent()
Примеры можно скачать отсюда.

Комментарии

Скачал CaptchaMVC 2.5.dll, установил сделал все как показано, и нечего не работает, как только убираешь расширяющий метод все работает

Добрый день,

Если вы используете метод AsIntelligent, то в этом режиме капча отображаться не будет, капча будет показана только в том случае, если будет нарушено хоть одно правило IIntelligencePolicy.

Что в вашем случае означает "ничего не работает"?
Если у вас есть ошибки, то для анализа необходим текст ошибки и StackTrace (если он есть).

Оставить комментарий
*bold*
_italics_
+underline+
* Bullet List
** Bullet List 2
# Number List
## Number List 2
{"Do not apply formatting"}
{code:language} code here {code:language}.
Supports: aspx c#, c#, c++, html, sql, xml
[url:http://www.example.com]