使用servlet和HttpSession跟踪最大登录尝试的问题
我正在尝试限制最大登录尝试次数。 以下是我目前正在做的事情: 1.)将登录计数器存储在会话中 2.)每次登录尝试时,比较会话中存储的计数器 3.)如果计数器较小,则最大尝试次数>>增加使用servlet和HttpSession跟踪最大登录尝试的问题,session,servlets,login,httpsession,login-attempts,Session,Servlets,Login,Httpsession,Login Attempts,我正在尝试限制最大登录尝试次数。 以下是我目前正在做的事情: 1.)将登录计数器存储在会话中 2.)每次登录尝试时,比较会话中存储的计数器 3.)如果计数器较小,则最大尝试次数>>增加计数器 4.)如果计数器等于最大尝试次数>>则将会话的上次访问时间与当前时间进行比较 如果差异超过(比如20分钟),则销毁会话(以允许用户进行尝试) 如果差异较小,则重定向到错误页面。 这一切工作正常,但即使用户只是浏览web应用程序的其余部分(登录页面除外),此方法也会失败 现在考虑一下: 一个用户超过了最大登录
计数器
4.)如果计数器等于最大尝试次数>>则将会话的上次访问时间
与当前时间
进行比较
如果差异超过(比如20分钟),则销毁会话
(以允许用户进行尝试)
如果差异较小,则重定向到错误页面。
这一切工作正常,但即使用户只是浏览web应用程序的其余部分(登录页面除外),此方法也会失败
现在考虑一下:
一个用户超过了最大登录尝试次数,因此他决定浏览应用程序的其余部分20分钟。但即使在20分钟后,登录尝试也失败了 这是因为计数器
存储在会话
中,并且用户在同一会话中浏览web应用程序,因此会话的上次访问时间
与当前时间
之间的差值不大于20分钟
,因此它失败
那么我该如何解决这个问题呢
谢谢。您可以使用
会话创建时间
或在会话中存储用户超过登录时间的时间。因此,请使用其中一个时间与上次访问时间进行比较
谢谢。这是处理我的问题的一个非常好和简单的方法。