Как перезагрузить Spring Принципала безопасности после обновления в спящем режиме?
Это должна быть распространенная проблема... и я чувствую, что после googling и SOing я, должно быть, просто не огляделся полностью для ответа достаточно или что no1 спросил об этом... так что простите меня.
Я использую Spring Безопасность с Hibernate и т.д.
Итак, пользователь/главный пользователь вошел в систему и внесла некоторые изменения в свой профиль.
Я использую свой DAO для обновления профиля (UserDetails), и я хочу, чтобы мой Принципал автоматически отражал это обновление.
Однако, когда я снова получаю Принципала, я получаю грязную версию (из моего первоначального входа).
Кто-нибудь знает, как я могу получить Spring Безопасность для перезагрузки из Hibernate обновленных UserDetails?
Ответы
Ответ 1
ОК выкопал и наконец нашел ответ.
Мы можем создать UsernamePasswordAuthenticationToken и назначить обновленного Принципала контексту.
Authentication authentication = new UsernamePasswordAuthenticationToken(userObject, userObject.getPassword(), userObject.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);
См. также "Как вручную установить аутентифицированного пользователя в Spring Security/SpringMVC".