首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mvc在登录尝试失败后生成验证码

mvc在登录尝试失败后生成验证码
EN

Stack Overflow用户
提问于 2011-06-27 21:17:54
回答 1查看 3.2K关注 0票数 4

所以我能够让我的recaptcha的东西工作,但我的问题是,我想让它只在3次尝试后出现。我有一个选择是将用户重定向到一个视图,这将有验证码已经(登录的副本,但验证码),然后让他通过该页面登录。还有没有别的选择?我觉得部分视图会在页面的帖子上造成问题。你认为生成验证码的最好方法是什么?

代码语言:javascript
复制
    <% 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") %>


    <% } %>

THanks,G

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-27 21:24:12

您正在传递一个模型(希望是一个ViewModel)。为什么不将NumberOfFailedLogins添加到其中?

然后,您可以在Recaptcha周围放置一些代码,说明

代码语言:javascript
复制
<%: if (Model.NumberofFailedLogins > 3) { %>
<%: ReCaptcha.GetHtml(publicKey: "thisismykey", theme: "red") %>
<% } %>

注意:我习惯了Razor的语法,所以如果上面的语法不够完美,我深表歉意。我相信你已经明白了!

显然,您需要在幕后更新NumberOfFailedLogins

EDIT:只是为了澄清,失败的登录尝试的次数应该在幕后自动记录在成员资格数据库中(尝试登录的动作将执行此操作;请注意,ASP.NET Membership Provider会自动记录连续失败的登录尝试的数量),ViewModel就是从那里获得此信息的。因此,如果您正在使用机器人尝试暴力破解,它仍然可以在三次尝试后与ReCaptcha一起显示(当然,如果需要,也可以锁定)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6493449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档