web-dev-qa-db-fra.com

Comment recharger Spring Security Principal après la mise à jour dans Hibernate?

Cela doit être un problème commun ... et je pense qu'après avoir googlé et SOing, je n'ai tout simplement pas suffisamment cherché la réponse ou que no1 ne l'a pas demandée ... alors veuillez me pardonner.

J'utilise Spring Security avec Hibernate, etc.

Un utilisateur/principal s'est donc connecté et a apporté des modifications à son profil.

J'utilise mon DAO pour mettre à jour le profil (UserDetails) et je veux que mon principal reflète automatiquement cette mise à jour.

Cependant, lorsque j'obtiens à nouveau le principal, j'obtiens la version sale (à partir de ma connexion initiale).

Est-ce que quelqu'un sait comment je peux faire en sorte que Spring Security recharge depuis Hibernate les UserDetails mis à jour?

35
alwinc

OK a fouillé et a finalement trouvé la réponse.

Nous pouvons créer un UsernamePasswordAuthenticationToken et affecter le principal mis à jour au contexte.

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

Voir aussi " Comment définir manuellement un utilisateur authentifié dans Spring Security/SpringMVC ".

50
alwinc