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

本文关键字:失败 用户 登录 | 更新日期: 2023-09-27 18:29:03

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

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

那么,如果我用用户名来计算失败的尝试,那么我怎么能屏蔽一个用户呢?这样,另一个人只需猜测用户名并键入错误,就可以很容易地屏蔽该帐户。

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

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

我会在用户表中使用FailedAttemptCount列,每次用户的尝试无效时都会增加它

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

在会员资格这样的情况下(我认为你也在存储密码),我建议使用已经创建的系统,而不是滚动自己的系统。

如果您使用的是Asp.NET成员资格提供程序,您可以将该提供程序配置为有登录尝试maxInvalidPasswordAttempts="3"{任何尝试次数}。有关更多信息,请参阅登录尝试

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

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

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

但这应该很容易。

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

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

如果相同的SessionID和相同的用户名登录三个,也许SessionID是有用的

登录失败时,具有sessionID的用户会被阻止。。。。