Проблема с отслеживанием максимального количества попыток входа в систему с использованием сервлета и HttpSession

Я пытаюсь ограничить максимальное количество попыток входа в систему. Вот что я делаю в настоящее время:

1.) Сохраните счетчик входа в сеанс

2.) При каждой попытке входа в систему сравнивается счетчик, хранящийся в сеансе.

3.) Если счетчик меньше, чем максимальное количество попыток >> увеличьте counter

4.) Если счетчик равен максимальному количеству попыток >> сравнить last access time сеанса с current time.

Если разница больше (скажем, 20 минут), то destroy the session (чтобы пользователь мог делать попытки).

Если разница меньше, редирект на страницу с ошибкой. Все это работает нормально, но этот метод не работает, даже если пользователь просто просматривает остальную часть веб-приложения (кроме страницы входа).

Теперь подумайте об этом:

Один пользователь превысил максимальное количество попыток входа в систему, поэтому он решает просмотреть остальную часть приложения в течение 20 минут. Но даже через 20 минут попытка входа не удалась.

Это связано с тем, что counter хранится в session, и с тем же сеансом пользователь просматривает веб-приложение, поэтому разница между last access time и current time для сеанса не превышает 20 minute, поэтому он не работает.

Итак, как мне решить эту проблему.

Спасибо.


person me_digvijay    schedule 05.06.2013    source источник


Ответы (1)


Вы можете использовать session create time или сохранить в сеансе время, когда пользователь превысил количество попыток входа в систему. Поэтому используйте одно из этих значений времени для сравнения с last access time.

person fmodos    schedule 05.06.2013
comment
Спасибо. Это очень хороший и простой способ справиться с моей проблемой. - person me_digvijay; 06.06.2013