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

时间:2013-06-05 18:23:30

标签: session servlets login httpsession login-attempts

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

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

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

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

4.如果计数器等于最大尝试数>>将会话的last access timecurrent time进行比较。

如果差异超过(例如20分钟),那么destroy the session(允许用户进行尝试)。

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

现在考虑一下:

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

这是因为counter存储在session中并且用户正在浏览网络应用的同一会话,因此last access time与{{1}之间存在差异因为会话不大于current time因此它失败了。

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

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以在会话中使用session create time或存储用户超出登录尝试的时间。因此,请使用其中一个时间与last access time进行比较。