[英]Login - Allow only 3 attempts
我正在创建一个新的应用程序..我成功创建了一个登录页面..现在我需要修改登录页面..只允许用户进行3次尝试..如果用户错误地输入密码超过3次(5次以内) min)他的帐户必须被屏蔽。并且必须显示错误消息,因为您无法访问您的页面..请分享您的想法...
使用MembershipProvider并在web.config中,在system.web中,您可以配置尝试次数和超时次数。 根据您的要求设置maxInvalidPasswordAttempts =“3”和passwordAttemptWindow =“5”。
<membership defaultProvider="MyMembershipProvider">
<providers>
<clear/>
<add name="MyMembershipProvider"
type="MyMembershipProvider"
autogenerateschema="true"
connectionStringName="MyConnectionString"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="3"
minRequiredPasswordLength="8"
minRequiredNonalphanumericCharacters="1"
passwordAttemptWindow="5"
passwordStrengthRegularExpression=""
applicationName="/" />
</providers>
</membership>
这将需要一些配置,但是如果配置正确(甚至可能使用角色提供者),默认的asp.net登录控件几乎可以处理所有事情,甚至是PasswordRecovery和CreateUserWizard。 MembershipProvider将自动为用户注册生成所有必需的表。
数据库可以是mdb文件,ms sqlserver或mysql数据库。
只需将一个int-column添加到名为FailedLogins
的用户表中。 每当他失败时计算它,如果计数器更大,那么3不再允许从该帐户进行任何登录。
编辑:如果要在一定时间后重置尝试,则必须添加datetime-column(fe LastFailedLogin
)并检查是否已经过了足够的时间以允许进一步尝试和/或重置计数器。
您将需要使用Membership.MaxInvalidPasswordAttempts属性来跟踪登录尝试。
这里有一个显示错误消息的工作代码示例:
我们在说多少用户? 1? 数百?
如果只有一个,则可以创建静态int变量和静态DateTime变量。 程序启动时,将int nTries设置为0,将DateTime staticDate设置为Now。
每次显示登录屏幕时,请检查nTries <MAX_TRIES和timeSpan <5分钟。 如果timeSpan大于5分钟,请将nTries设置为0并将staticDate更新为Now。
如果您喜欢使用文本文件进行读/写,您还可以轻松读取/写入文本文件的尝试次数。 在这种情况下,如果您的应用程序只有少数几个用户,那么每个用户可以拥有一行(避免数据库开销)。
如果您有数百个用户,则需要使用数据库。 在该数据库中,您可以存储每个用户,他上次登录尝试的时间戳以及他所拥有的尝试次数。
你可以使用这个代码,
//if login failed
if (session["loginclient"] != null)
{
if(Convert.ToInt32(session["loginclient"] ) == 3)
Response.Redirect("Forgetpassword.aspx")
else
session["loginclient"] = Convert.ToInt32(session["loginclient"] ) + 1
}
else
{
session["loginclient"] = 1;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.