Мы хотим ограничить количество параллельных одновременных сеансов, которые один и тот же пользователь может иметь в нашем приложении.
В настоящее время мы разработали его таким образом, чтобы при входе в систему в таблицу БД вносилась запись с помощью * Столбец 1003 * как null
, указывающий, что пользователь активен. Когда один и тот же пользователь пытается войти в систему с отдельной машины, запускается запрос к БД, чтобы проверить, существует ли уже запись для этого пользователя с logout_time
как null
. Если такая запись существует, пользователь перенаправляется на страницу выхода с соответствующим сообщением. Это прекрасно работает, когда пользователь выходит из системы систематически, когда после выхода из системы logout_time
в этой таблице БД обновляется до значения метки времени. Однако, в случае нескольких внезапных событий, таких как браузер cra sh, системный cra sh, выключение системы без выхода из системы, сбой inte rnet и т.д. c. Эта строка БД не обновляется, поскольку сервер (Tomcat) не получает возможности обнаружить такие резкие события.
Существует ли способ, которым контейнер сервлетов обновляет эту строку БД, при таких резких событиях или в худшем случае? время ожидания сеанса, так что пользователь может войти снова, по крайней мере, через 30 минут.
Любое другое решение приветствуется! Благодарим вас за помощь.