Подтвердить что ты не робот

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

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

Я использую Spring Безопасность с Hibernate и т.д.

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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