使用servlet和HttpSession跟踪最大登录尝试的问题

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

我正在尝试限制最大登录尝试次数。 以下是我目前正在做的事情:

1.)将登录计数器存储在会话中

2.)每次登录尝试时,比较会话中存储的计数器

3.)如果计数器较小,则最大尝试次数>>增加
计数器

4.)如果计数器等于最大尝试次数>>则将会话的
上次访问时间
当前时间
进行比较

如果差异超过(比如20分钟),则
销毁会话
(以允许用户进行尝试)

如果差异较小,则重定向到错误页面。 这一切工作正常,但即使用户只是浏览web应用程序的其余部分(登录页面除外),此方法也会失败

现在考虑一下:

一个用户超过了最大登录尝试次数,因此他决定浏览应用程序的其余部分20分钟。但即使在20分钟后,登录尝试也失败了

这是因为
计数器
存储在
会话
中,并且用户在同一会话中浏览web应用程序,因此会话的
上次访问时间
当前时间
之间的差值不大于
20分钟
,因此它失败

那么我该如何解决这个问题呢


谢谢。

您可以使用
会话创建时间
或在会话中存储用户超过登录时间的时间。因此,请使用其中一个时间与
上次访问时间进行比较

谢谢。这是处理我的问题的一个非常好和简单的方法。