Avant de résumer, j'ai vu beaucoup d'exemples de grands dieux en ligne. Les exemples citent également de grands dieux. Merci! ! !
1. Lors de l'intégration de springboot2.0 et oauth2.0 (mode mot de passe), un problème n'a pas pu être déterminé, le nom d'utilisateur et le mot de passe dans l'url demandée: ( http: // localhost: 8080 / oauth / token? Grant_type = password & client_id = client_2 & client_secret = 123456 & username = user_1 & password = 123456 )
Et il n'y a pas de mot de passe dans le code, comment sait-il si l'utilisateur fonctionne correctement? Le nom d'utilisateur et le mot de passe dans l'image ci-dessous sont codés en dur, et vous ne pouvez pas voir comment le nom d'utilisateur et le mot de passe sont transmis. Cette classe UserDetailsService a une méthode loadUserByUsername. S'il est en mode mot de passe, il n'y a qu'un seul paramètre, qui est imprimé et s'avère être le nom d'utilisateur entré Et le mot de passe? L'utilisateur peut-il être jugé comme étant le bon utilisateur uniquement par son nom d'utilisateur?
2. Lors de la demande du jeton, nous appelons: http: // xxx / oauth / token? Grant_type = password & client_id = client_2 & client_secret = 123456 & username = user_1 & password = 123456 ,
oauth / token : cette méthode n'a pas été écrite par nous. Voyons comment cette méthode reçoit le mot de passe. Pourquoi UserDetailsService n'a qu'un seul nom d'utilisateur et aucun mot de passe. Après la recherche globale, il existe une méthode oauth / token dans TokenEndpoint. Après avoir regardé le code source, À l'origine, après avoir reçu les paramètres, elle les a déjà stockés et UserDetailsService demande s'il existe à partir des objets stockés, comme indiqué dans la figure:
À suivre ...