У нас есть веб-приложение. Мы хотим предотвратить множественный вход одних и тех же пользователей. По сути, мы хотим, чтобы это произошло так:
- Джон входит в приложение как "user1".
- Машина Джона немного зависает по какой-то неизвестной причине.
- Джон не может ждать. Джон переходит на компьютер2, открывает там браузер и входит в систему как "пользователь1".
- Сеанс Джона в браузере на первом компьютере теперь должен быть аннулирован.
для этого мы планируем сохранять в базе данных все sessionId всех вошедших в систему пользователей. Это делается для того, чтобы проверить, не вошел ли другой пользователь с тем же именем на другом компьютере или использовал другой браузер на том же компьютере. Чтобы реализовать это, мы планируем выполнить проверку идентификатора сеанса в классе Filter, который проверяет сеанс. При этом будут вызовы базы данных каждый раз, когда вызывается класс Filter.
Это хорошая практика?
РЕДАКТИРОВАТЬ:
SessionId самого последнего пользователя, вошедшего в систему, всегда будет отслеживаться. Таким образом, в примере, когда Джон входит в систему с помощью браузера на машине 2, идентификатор сеанса, сохраненный в базе данных (с компьютера 1), будет переопределен идентификатором сеанса в браузере на компьютере 2. Теперь, когда браузер на компьютере1 снова используется, он автоматически аннулирует сеанс, поскольку обнаруживает, что идентификатор сеанса для пользователя теперь отличается.