Не удаётся использовать userId при логине для добавления атрибутов в userSession

Здравствуйте. Стоит весьма несложная задача. Есть связанная с системным пользователем таблица, в которой хранится некоторый идентификатор организации. Я пытаюсь подписаться на событие входа пользователя в систему для обращения к этой таблице для записи в сессию этого самого идентификатора организации. Очевидно, что в запросе я должен использовать идентификатор пользователя. Прописал для эксперимента в базе одну только запись с таким пользователем в базе. Пользователь “admin”. С ним и захожу.

Проблема заключается в том, что на какие бы события я не подписывался(afterLoginUser, LoggedIn), при попытке получить из сессии userId возвращаются какие-то неизвестные идентификаторы, попытка получить из сессии userLogin возвращает null.

@EventListener
public void userLoggedIn(UserLoggedInEvent event) {
    UserSession userSession = userSessionSource.getUserSession();
    UUID userID = userSession.getAttribute("userId");

    UUID organizationId = getOrganizationID(dataManager, userID);
    if (organizationId != null)
    {
        userSession.setAttribute("organizationID", organizationId);
    }
}

Посоветуйте, пожалуйста, на какое событие правильнее подписаться для реализации данной задачи. Правильно ли я получаю идентификатор пользователя?

Заранее спасибо.

В этом событии у вас ID пользователя доступно из event.

UUID userID = event.getUserSession().getUser().getId();

Мы на этом событии тоже некоторые атрибуты навешиваем - все четко работает.

Только имейте в виду, что при старте приложения, до первого логина через UI, выполняются служебные операции и от имени встроенного пользователя anonymous.

Спасибо большое за совет брать информацию из Event. Попробую. Но, если возможно, уточните, пожалуйста, какое событие(какой прослушиватель) лучше использовать: userLoggedIn или какое-то другое?

И уточните, пожалуйста, почему это событие вызывается несколько раз даже для одного пользователя?

В вашем случае использовать userLoggedIn - вполне логично.

Цитата
И уточните, пожалуйста, почему это событие вызывается несколько раз даже для одного пользователя?

Служебные логин под anonymous происходят при старте приложения, еще до того как пользователь видит UI и может залогиниться.
Насколько я помню, в этот момент происходит два логина под anonymous. Для загрузки инициализации представлений и , если не ошибаюсь, для инициализации служебных разрешений.
Можете посмотреть это в логе catalina.out уровень info до момента Server startup in […]