Dans Spring Security 3.1, j'utilise l'authentification par formulaire et je souhaite mettre des attributs supplémentaires dans l'objet UserDetails

StackOverflow https://stackoverflow.com/questions/9367089

  •  28-10-2019
  •  | 
  •  

Question

Je suis nouveau sur Springs et je ne suis pas un programmeur avancé de Java.

Je crée un prototype dans lequel j'utilise la sécurité Springs. pour rester simple, j'utilise l'authentification utilisateur basée sur le formulaire JSP et j'ai des utilisateurs factices dans mon applicationContext-security.xml

<security:http auto-config='true'>
  <security:intercept-url pattern="/**" access="ROLE_USER" />
</security:http>

<security:authentication-manager>
  <security:authentication-provider>
    <security:user-service>
      <security:user name="foo" password="foo" authorities="ROLE_USER, ROLE_ADMIN" />
      <security:user name="bob" password="bob" authorities="ROLE_USER" />
    </security:user-service>
  </security:authentication-provider>
</security:authentication-manager>

L'idée est que plus tard, cette méthode d'authentification sera remplacée par l'authentification OpenId.

Maintenant, ce dont j'ai besoin, c'est une fois que l'utilisateur est authentifié, en utilisant le nom d'utilisateur authentifié, je voudrais récupérer des détails supplémentaires sur l'utilisateur à partir d'une table de base de données et les mettre dans l'objet Springs UserDetails afin qu'il soit disponible pour moi tout le temps

ce que j'ai recherché jusqu'à présent, c'est que je dois créer mon service personnalisé UserDetailsService

Ma question est: si j'utilise la méthode d'authentification standard de Springs, ai-je besoin de créer un UserDetailsService personnalisé? Je veux juste stocker quelques détails supplémentaires en le lisant à partir d'une base de données.

J'ai parcouru de nombreux exemples mais aucun d'entre eux ne répond à ce problème particulier. aussi depuis que je suis peu nouveau dans ces technologies. je me perds pas comment lier les extraits de code ensemble. toute aide pour me diriger vers la bonne direction serait formidable

merci

Était-ce utile?

La solution

Oui.En règle générale, vous avez besoin d'un UserDetailsService personnalisé qui renvoie votre objet UserDetails étendu avec les propriétés supplémentaires souhaitées.Vous trouverez de nombreux exemples de configurations si vous recherchez SO, comme celui-ci , par exemple.

À proprement parler, vous n'avez pas besoin d'utiliser un UserDetailsService ou d'implémenter UserDetails (vous pouvez implémenter AuthenticationProvider directement), mais c'est l'approche la plus simple pour être avec et probablement par où commencer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top