所以我能够让我的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") %>
<% } %>THanks,G
发布于 2011-06-27 21:24:12
您正在传递一个模型(希望是一个ViewModel)。为什么不将NumberOfFailedLogins添加到其中?
然后,您可以在Recaptcha周围放置一些代码,说明
<%: if (Model.NumberofFailedLogins > 3) { %>
<%: ReCaptcha.GetHtml(publicKey: "thisismykey", theme: "red") %>
<% } %>注意:我习惯了Razor的语法,所以如果上面的语法不够完美,我深表歉意。我相信你已经明白了!
显然,您需要在幕后更新NumberOfFailedLogins!
EDIT:只是为了澄清,失败的登录尝试的次数应该在幕后自动记录在成员资格数据库中(尝试登录的动作将执行此操作;请注意,ASP.NET Membership Provider会自动记录连续失败的登录尝试的数量),ViewModel就是从那里获得此信息的。因此,如果您正在使用机器人尝试暴力破解,它仍然可以在三次尝试后与ReCaptcha一起显示(当然,如果需要,也可以锁定)。
https://stackoverflow.com/questions/6493449
复制相似问题