在指定次数的登录失败后阻止用户
本文关键字:失败 用户 登录 | 更新日期: 2023-09-27 18:29:03
在我们的应用程序中,我们希望在指定次数的登录失败后阻止用户。我们正在使用自定义表来存储用户。
在我们的登录页面中,它包含三个字段,如用户名、密码和id字段。id字段不是唯一的。
那么,如果我用用户名来计算失败的尝试,那么我怎么能屏蔽一个用户呢?这样,另一个人只需猜测用户名并键入错误,就可以很容易地屏蔽该帐户。
那么,通过阻止用户来获取失败登录的最佳方法是什么呢?
我会在用户表中使用FailedAttemptCount列,每次用户的尝试无效时都会增加它
您是否考虑过使用ASP.NET成员身份?这已经处理了您提到的情况。这可以配置为在多次尝试失败后锁定帐户。
在会员资格这样的情况下(我认为你也在存储密码),我建议使用已经创建的系统,而不是滚动自己的系统。
如果您使用的是Asp.NET成员资格提供程序,您可以将该提供程序配置为有登录尝试maxInvalidPasswordAttempts="3"
{任何尝试次数}。有关更多信息,请参阅登录尝试
在登录尝试失败时,我会使用存储在应用程序状态中的字典,IP为key
,一个简单的整数将尝试计数为value
然后,在每次登录失败时,如果字典中存在用户的IP,则将其增加。如果尝试计数器为>
,而不是登录尝试次数,则中止会话。
当然,您还需要实现一个时间间隔,以及在成功登录时重置计数器的方法。
但这应该很容易。
您可以在用户表中添加几列来跟踪失败登录的次数。然后,您可以在每次有人输入错误的凭据时更新失败登录的次数,如果他们输入了正确的凭据,您可以将其设置回0。
例如,如果要指定半小时的超时时间,还可以为上次登录尝试添加一个日期时间字段。
如果相同的SessionID和相同的用户名登录三个,也许SessionID是有用的
登录失败时,具有sessionID的用户会被阻止。。。。