繁体   English   中英

登录 - 仅允许3次尝试

[英]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属性来跟踪登录尝试。

这里有一个显示错误消息的工作代码示例:

http://forums.asp.net/p/1520434/3652047.aspx

我们在说多少用户? 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM