Я пытаюсь ограничить максимальное количество попыток входа в систему. Вот что я делаю в настоящее время:
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
, поэтому он не работает.
Итак, как мне решить эту проблему.
Спасибо.