Вы передаете модель (возможно, ViewModel). Почему бы не добавить NumberOfFailedLogins
к нему?
Тогда вы могли бы просто поместить немного кода вокруг Recaptcha
, сказав
<%: if (Model.NumberofFailedLogins > 3) { %>
<%: ReCaptcha.GetHtml(publicKey: "thisismykey", theme: "red") %>
<% } %>
ПРИМЕЧАНИЕ: я привык к синтаксису Razor, поэтому извиняюсь, если вышеупомянутое не идеально. Я уверен, что вы поняли!
Очевидно, вам нужно обновить NumberOfFailedLogins
за кулисами!
РЕДАКТИРОВАТЬ: Просто чтобы уточнить, количество неудачных попыток входа в систему должно автоматически регистрироваться в базе данных участников за кулисами (попытка входа в систему сделает это; обратите внимание, что Поставщик членства ASP.NET автоматически записывает количество последовательных неудачных попыток входа в систему из коробки), и именно оттуда ViewModel получает эту информацию. Таким образом, не имеет значения, используете ли вы бот, чтобы попытаться грубо взломать свой путь, он все равно может быть представлен с помощью ReCaptcha после трех попыток (и, конечно, при желании может быть заблокирован).