Создание прослушивателя UserSessions (CUBA Studio)

Я создаю проект на платформе CUBA Studio (Java). Буду благодарен за советы и полезные ссылки.

У меня есть класс MyUser, расширяющий класс User, добавлено поле LastTimeOnline. Я хочу реализовать обновление этого поля через UserSession (активацию и деактивацию). Сам UserSession не сохраняется в базе данных.

В Cuba Studio есть интерфейс UserSessionListener, который я хотел бы реализовать, но не могу понять, как активировать этот прослушиватель.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте прослушиватели Spring для событий аутентификации, предоставляемых CUBA. Например. для отслеживания успешного входа в систему реализуйте bean-компонент Spring:

@Component
public class LoginEventListener {

    @EventListener
    protected void onUserLoggedIn(UserLoggedInEvent event) {
        User user = event.getUserSession().getUser();
        // ...
    }
}

Больше информации здесь: https://doc.cuba-platform.com/manual-7.2/login.html#login_events

Хотя я не уверен, существует ли соответствующее событие для завершения сеанса.

Спасибо за информацию! Да, я читал про эти слушатели, но, насколько я понимаю, этот метод не учитывает продолжительность дальнейшей работы в сессиях и регистрирует только момент авторизации. Меня заинтересовал интерфейс UserSessionListener из-за его описания, и я хотел бы знать, как его реализовать: * Разработчики получают уведомление при изменении сеанса пользователя. * Это уведомление полезно для прекращения дорогостоящей анимации или для указания того, что пользователь больше не присутствует в сетевой службе.

Felex 12.03.2024 12:45

Если вы имеете в виду интерфейс из пакета java.awt.desktop, то он является частью библиотеки пользовательского интерфейса Java для настольных компьютеров и не может использоваться для веб-приложений. Кстати, вы можете переопределить bean-компонент com.haulmont.cuba.security.app.UserSessionLogBean Spring в своем проекте, он получает уведомления даже об истекающих сеансах (SessionAction.TERMINATION).

alexb 12.03.2024 13:22

Другие вопросы по теме