0
votes

Comment puis-je configurer un authentification de sécurité à ressort à utiliser avec un JDBCuserDétailsManager?

J'ai une application Web qui utilise un démarrage à ressort et une sécurité configurée pour utiliser le formulaire de connexion avec l'authentification JDBC.

Connexion et déconnexion fonctionne bien et en général, Auth semble fonctionner.

sauf pour Un cas ... lorsque j'essaie de changer mon mot de passe, je remarque que, si le mot de passe change est un succès, l'authentificationManager que je souhaite vérifier le mot de passe existant ... est null!

entrez Description de l'image ici

Comment puis-je configurer un authentificationManager (peut-être avec un daoauthenticationProvider et / ou daoauthenticationmanager?) Pour que l'authentificationManager ne soit pas nulle et vérifiera le mot de passe existant? < / p>

Configue pertinente: xxx

authcontroller, et ici, je souhaite un utilisateur utilisateur injecté à cet effet - pour pouvoir facilement modifier le mot de passe de compte: < Pré> xxx

si j'essaie la configuration mentionnée Ci-dessous dans une réponse, je reçois: xxx


0 commentaires

3 Réponses :


0
votes

Je ne sais pas pourquoi c'est le cas, mais ne pouviez-vous pas simplement faire quelque chose de similaire à cela, au lieu de passer à travers l'Authmanager: Travailler directement avec l'utilisateur actuellement logedin (Détails). XXX < / p>


1 commentaires

Cela ne fonctionnera pas car l'injection ne se produit pas dans une classe de sécurité de printemps.



0
votes

Votre configuration est défectueuse, car vous activez une instanciation trop précoce du userDétailsService ce que vous devriez faire

  1. Votre configureglobal doit renvoyer void .
  2. Remplacez le userDétailsServiceBean , appelez super et annotant cela avec @bean . Comme documenté ici
  3. Vous devez définir le document sur votre userDétailsService Configuration et ne pas encoder le mot de passe vous-même lors de la création de l'utilisateur.
  4. Vous devriez avoir @enablewebsecurity sur votre classe aussi.

    La sécurité du ressort de cette façon sera correctement initialiser et configurer tous les composants. (Bien que 3 et 4 ne soient pas liés, ils doivent être définis pour une configuration appropriée au sens général). xxx


3 commentaires

J'ai ajouté d'autres informations à la question.


Je ne pense pas que ce soit ce que le propriétaire de la question veut, il n'a pas fourni d'instance de UserDétailsManager ...


Il avait l'habitude d'exposer un, cependant apparemment dans une version récente qui a changé (il y a maintenant un wrapper paresseux autour de lui). Qui expose uniquement le userDétailsService .



0
votes

Cette config semble fonctionner correctement. Lors de la modification des mots de passe, l'utilisateur existant est authentifié par un DaoAuthentiGitoidProvider, qui a une référence à JDBCuserDétailsManager utilisé par l'AuthController

Entrez la description de l'image ici Entrez la description de l'image ici xxx


0 commentaires