Вопрос: Как перезагрузить Spring Security Principal после обновления в спящем режиме?


Это должно быть распространенной проблемой ... и я чувствую, что после googling и SOing я, должно быть, просто не огляделся полностью для ответа достаточно или что no1 спросил об этом ... так что простите меня.

Я использую Spring Security с Hibernate и т. Д.

Таким образом, пользователь / главный пользователь вошел в систему и внес некоторые изменения в свой профиль.

Я использую свой DAO для обновления профиля (UserDetails), и я хочу, чтобы мой Принципал автоматически отражал это обновление.

Однако, когда я снова получаю Принципала, я получаю грязную версию (от моего первоначального входа).

Кто-нибудь знает, как я могу заставить Spring Security перезагрузить из Hibernate обновленные UserDetails?


28


источник


Ответы:


ОК откопал и наконец нашел ответ.

Мы можем создать UserPasswordAuthenticationToken и назначить обновленного Принципала контексту.

Authentication authentication = new UsernamePasswordAuthenticationToken(userObject, userObject.getPassword(), userObject.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);

Смотрите также " Как вручную установить аутентифицированного пользователя в Spring Security / SpringMVC ».


44