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




Используйте прослушиватели 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
Хотя я не уверен, существует ли соответствующее событие для завершения сеанса.
Если вы имеете в виду интерфейс из пакета java.awt.desktop, то он является частью библиотеки пользовательского интерфейса Java для настольных компьютеров и не может использоваться для веб-приложений. Кстати, вы можете переопределить bean-компонент com.haulmont.cuba.security.app.UserSessionLogBean Spring в своем проекте, он получает уведомления даже об истекающих сеансах (SessionAction.TERMINATION).
Спасибо за информацию! Да, я читал про эти слушатели, но, насколько я понимаю, этот метод не учитывает продолжительность дальнейшей работы в сессиях и регистрирует только момент авторизации. Меня заинтересовал интерфейс UserSessionListener из-за его описания, и я хотел бы знать, как его реализовать: * Разработчики получают уведомление при изменении сеанса пользователя. * Это уведомление полезно для прекращения дорогостоящей анимации или для указания того, что пользователь больше не присутствует в сетевой службе.