Сегодня, я выпустил новую версию библиотеки 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); }
- FakeInputIntelligencePolicy – используется "лишнее" поле для создания “intelligent captcha”, то о чем я писал выше.
- JavaScriptIntelligencePolicy– использует JavaScript, для создания “intelligent captcha”. Проверяет, включен ли у пользователя JavaScript.
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); ...
Пример кода:
@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 (если он есть).
А как протестировать что IntelegentCapcha работает? Допустим с java проверкой понятно. А с FakeInputIntelligencePolicy как проверить работу