Тайм-аут сеанса Liferay

Генерирует ли Liferay какое-либо событие или действие, когда время сеанса пользователя истекло. Я хочу выполнить какое-то действие (обновить страницу), как только время сеанса истечет (не хочу автоматически продлевать сеанс, об этом я знаю). Проблема в том, что мы удалили предупреждение об истечении времени ожидания сеанса. Таким образом, пользователь на самом деле не знает, что время его сеанса истекло. Итак, если он выполняет какое-либо действие (меняет изображение своего профиля), то; он вносит изменения в пользователя-гостя (он меняет изображение для пользователя-гостя, поскольку время сеанса истекло).


person Dhruv Pandey    schedule 17.11.2017    source источник


Ответы (1)


Если вы разрешаете гостевым пользователям изменять данные в вашей системе, у вас есть проблема в базовой архитектуре, и вам следует реализовать надлежащую проверку разрешений. Я предполагаю, что вы не говорите о пользовательском интерфейсе Liferay по умолчанию, который уже должен выполнять надлежащие проверки.

Насколько я понимаю, это дает вам 99,99% того пути, которым вы хотите идти: реализация смены страницы, когда время сеанса истекает, недружественно для пользователя - поскольку они могут просто находиться в процессе редактирования данных, когда они перенаправлены от этой наполовину заполненной формы непосредственно перед ее отправкой.

С точки зрения взаимодействия с пользователем вы, вероятно, захотите повторно активировать тайм-аут сеанса.

Следующая проблема, с которой вы столкнетесь в противном случае, заключается в том, что браузер и сервер ведут обратный отсчет сеанса, и не гарантируется их полная синхронизация. Предположим, что браузер перенаправляет на новую страницу за 1 секунду до того, как сервер истечет время сеанса: это фактически расширит сеанс (в то время как любой пользовательский ввод в любом случае теряется без предупреждения). Это проигрыш. Измените это и добавьте минуту безопасности к обратному отсчету браузера, и вы можете столкнуться с противоположным: пользователь ожидает, что он все еще вошел в систему, отправляет. Если у вас все еще такая же ошибочная реализация, о которой вы пишете, вы снова меняете данные как гостевой пользователь. Очередной проигрыш.

Сравните с повторной активацией обратного отсчета, который затем явно выходит из системы после предупреждения: пользователь получает предупреждение заранее, может продлить сеанс, не теряет данные и, если он не продлевается, память сеанса на сервере будет вовремя освобождена. Беспроигрышный вариант.

Вероятно, это не тот ответ, который вы ожидали, но ИМХО единственное решение этой проблемы.

person Olaf Kock    schedule 25.11.2017