Как перезагрузить Spring Security Principal после обновления в Hibernate? - PullRequest
33 голосов
/ 25 октября 2011

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

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

Поэтому пользователь / принципал зарегистрировался и внес некоторые изменения в свой профиль.

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

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

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

1 Ответ

50 голосов
/ 02 августа 2012

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...