mvc генерирует капчу после неудачной попытки входа - PullRequest
2 голосов
/ 27 июня 2011

, так что я смог заставить мою функцию recaptcha работать, но моя проблема в том, что я хочу, чтобы она появилась только после 3 попыток.один из вариантов, который у меня есть, - это перенаправить пользователя в представление, в котором уже есть капча (копия логина, но с капчей), а затем заставить его войти через эту страницу.есть ли другой вариант?я чувствую, что частичные просмотры могут вызвать проблемы на пост страницы.Как вы думаете, это лучший способ для создания капчи?

    <% using(Html.BeginForm()) {%>
      <%: Html.AntiForgeryToken() %>
      <%: Html.ValidationSummary() %>
      <label>Username:</label>
      <%: Html.TextBoxFor(m => m.Username) %>
      <br /><br />
      <label>Password:</label>
      <%: Html.PasswordFor(m => m.Password) %>
      <br /><br />
      <input type="submit" value="Login" />
      <%: Html.ActionLink("Register", "Register", "") %>
      <%: Html.ActionLink("Forgot Password", "Password", "") %>
      <%: Html.ActionLink("Forgot Username", "Username", "") %>


      <%: ReCaptcha.GetHtml(publicKey: "thisismykey", theme: "red") %>


    <% } %>

Спасибо, G

1 Ответ

3 голосов
/ 27 июня 2011

Вы передаете модель (возможно, ViewModel). Почему бы не добавить NumberOfFailedLogins к нему?

Тогда вы могли бы просто поместить немного кода вокруг Recaptcha, сказав

<%: if (Model.NumberofFailedLogins > 3) { %>
<%: ReCaptcha.GetHtml(publicKey: "thisismykey", theme: "red") %>
<% } %>

ПРИМЕЧАНИЕ: я привык к синтаксису Razor, поэтому извиняюсь, если вышеупомянутое не идеально. Я уверен, что вы поняли!

Очевидно, вам нужно обновить NumberOfFailedLogins за кулисами!

РЕДАКТИРОВАТЬ: Просто чтобы уточнить, количество неудачных попыток входа в систему должно автоматически регистрироваться в базе данных участников за кулисами (попытка входа в систему сделает это; обратите внимание, что Поставщик членства ASP.NET автоматически записывает количество последовательных неудачных попыток входа в систему из коробки), и именно оттуда ViewModel получает эту информацию. Таким образом, не имеет значения, используете ли вы бот, чтобы попытаться грубо взломать свой путь, он все равно может быть представлен с помощью ReCaptcha после трех попыток (и, конечно, при желании может быть заблокирован).

...