在指定次数的登录失败后阻止用户

时间:2012-03-26 04:10:20

标签: c# asp.net login

在我们的应用程序中,我们希望在指定次数的登录失败后阻止用户。我们使用自定义表来存储用户。

在我们的登录页面中,它包含三个字段,如用户名,密码和id字段。 id字段不是唯一的。

那么我如何阻止用户,如果我将使用用户名来计算失败的尝试,那么另一个人可以通过猜测用户名并错误地输入来轻松阻止该帐户。

那么获取失败登录的最佳方法是什么?阻止用户?

6 个答案:

答案 0 :(得分:1)

我会在您的用户表中使用FailedAttemptCount列,并在每次用户尝试无效时将其递增

答案 1 :(得分:1)

您是否考虑过使用ASP.NET Membership?这已经处理了你提到的情况。可以将其配置为在多次尝试失败后锁定帐户。

在会员资格等情况下(我假设您也存储密码)我建议使用已经创建的系统,而不是自己编辑。

答案 2 :(得分:1)

如果您使用的是Asp.NET会员提供商,则可以将提供商配置为进行登录尝试,maxInvalidPasswordAttempts="3" {任何尝试号码}。有关详情,请参阅Login Attempts

答案 3 :(得分:1)

在失败的登录尝试中,我会使用存储在应用程序状态中的字典,其IP为key,并使用一个简单的整数来将attemts计为value

然后在每次登录失败时,如果用户的IP存在于字典中,请增加它。如果尝试计数器的数量是>而不是登录数量,则中止会话。

当然,您还需要实现一个时间间隔,以及一种在成功登录时重置计数器的方法。

但这应该很容易。

答案 4 :(得分:0)

您可以向用户表中添加几列以跟踪登录失败的次数。然后,您可以在每次有人输入错误的凭据时更新失败的登录次数,如果他们输入了正确的凭据,您可以将其设置回0。

如果要指定例如半小时的超时,您还可以为上次登录尝试添加日期时间字段。

答案 5 :(得分:0)

如果相同的SessionID和相同的用户名登录三个

,也许SessionID很有用

当登录失败时,具有sessionID的用户被阻止....