Daniel Mårtensson:
Je veux accéder au connecté Adresse e-mail de l'utilisateur de OAuth2.0. Juste pour vous assurer utilisateur correct ont droit à la connexion.
Puis-je utiliser ce code:
@RequestMapping("/user")
public Principal user(Principal principal) {
return principal;
}
Qui sont appelés à partir de JavaScript:
<div>
Logged in as: <span id="user"></span>
</div>
$.get("/user", function(data) { // Call Java code with GET request
$("#user").html(data.userAuthentication.details.name); // Set id=user to the name of the user
});
Mais je veux y accéder à partir du code Java, pas de code JavaScript. Comment puis je faire ça?
rieckpil:
Si vous utilisez les paramètres par défaut Spring Security, vous pouvez lancer l' Principal
un UserDetails
objet et d' avoir accès à tout ce dont vous avez besoin pour votre cas d'utilisation:
@GetMapping("/user")
public Principal user(Principal principal) {
UserDetails userDetails = (UserDetails) principal;
System.out.println(userDetails.getUsername());
System.out.println(userDetails.getPassword());
System.out.println(userDetails.getAuthorities());
// do whatever you want ...
return principal;
}
Mise à jour : Comme vous l' avez mentionné que vous utilisez OAuth2, vous pouvez faire ce qui suit pour injecter un capital OAuth2 authentifié:
@GetMapping("/user")
public Principal user(@AuthenticationPrincipal OAuth2User principal) {
// do whatever you want ...
return principal;
}