-1
votes

Impossible de transmettre le paramètre supplémentaire à la sécurité de printemps avec OAuth2.0

bonne journée.

J'ai besoin de mettre en œuvre OAuth2 avec Spring-Security à l'aide de Springboot2 Basing sur l'URL ci-dessous.

Nom de l'URL: https://www.devglan.com/spring-security/ Spring-boot-oauth2-jwt-exemple

et je l'ai fait.

Ici, j'ai une autre exigence différente pour le code ci-dessus pour authentifier l'utilisateur.

J'ai besoin de transmettre Société avec le nom d'utilisateur et le mot de passe et à Grant_Type (mot de passe) dans l'onglet X-www-form-urlencode dans l'outil Postman. Et je dois chercher l'utilisateur basé sur le nom d'utilisateur et la société de l'entreprise.

Aidez-moi donc de sortir des changements que je dois faire dans le code de liaison ci-dessus afin que je puisse atteindre mes besoins.

ici Je n'obtiens que l'email. J'ai besoin d'email avec SeleNid. xxx

actuellement avec nom d'utilisateur et mot de passe, il fonctionne bien.

mais dans mon système, j'ai le même utilisateur mappé sur Différentes entreprises.Si même utilisateur mappé sur plusieurs sociétés trouvées, j'obtiens d'une erreur comme ci-dessous.

{ "Erreur": "non autorisé", "Error_Description": "La requête n'a pas renvoyé un résultat unique: 2; exception imbriquée est javax.persistence.nonuniqueSultException: la requête n'a pas renvoyé un résultat unique: 2" }

J'ai besoin d'aller chercher l'utilisateur, basé sur le nom d'utilisateur et le mot de passe et SelectronID qui entraîne un seul utilisateur.

Quelqu'un peut-il aider sur ce problème. Merci beaucoup à l'avance.


1 commentaires

Votre référentiel semble renvoyer 2 résultats au lieu de 1 (comme l'exception indique) afin que les 2 résultats ne puissent pas être mappés sur votre objet utilisateur, je suppose.


3 Réponses :


0
votes

Si vous souhaitez des informations supplémentaires avec des jetons d'accès, vous pouvez utiliser la classe TokenenHancer pour le faire.

CustomTokenHancer.java P>

@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
    endpoints.authenticationManager(authenticationManager)
            .allowedTokenEndpointRequestMethods(HttpMethod.GET, HttpMethod.POST)
            .tokenEnhancer(new CustomTokenEnhancer());
}


0 commentaires

0
votes

Bhanuprakash, j'ai un problème similaire mais temporaire je l'ai fait:

dans la méthode "LoadUserBYUSEname" Ecrivez ceci:

demande httpservletQuest = (((servlequestattributes) demandeContExtholder.getrequestatTtributes ())) greattQuest (); System.out.println ("compnayid:" + demande.geparamètre ("Compétence"));

Je pense qu'il y a une solution plus élégante, mais temporaire, j'ai utilisé cela.

merci.


0 commentaires

-1
votes

Ce commentaire a parfaitement fonctionné pour moi!

demande httpServletQuest = ((servlequestattatsattributes) Demandecontextextholder.getrequestattributes ())). GeTrequest (); System.out.println ("compnayid:" + demande.geparamètre ("Compétence"));


1 commentaires

Cela ne fournit pas de réponse à la question. Vous pouvez le laisser comme un commentaire.