[JAVA] Comment donner des informations utilisateur authentifiées à Spring Security autres que userId et mot de passe et comment s'y référer

Aperçu

Dans mon mémo, le didacticiel relatif à Spring Security, il est dit que l'identifiant utilisateur et le mot de passe utilisés pour l'authentification peuvent être référencés à partir de la session, mais je me suis simplement posé des questions sur les autres paramètres. Rien ne s'est passé, tout ce que j'avais à faire était d'ajouter un getter à la classe qui implémentait UserDetails. ..

Exemple de classe simple


public class User {
    private String userId;
    private String password;
    private String hoge;
    //getter,setter omis
}

public class UserDetailsImpl implements UserDetails {

    private final User user;
    
    public UserDetailsImpl(User user) {
        this.user = user;
    }

    public String getHoge() {
        return user.getHoge();
    }
    //Omettre les méthodes qui doivent être remplacées
}

Voir l'article que j'ai écrit plus tôt pour la méthode d'authentification J'ai implémenté le traitement d'authentification de connexion DB avec Spring Security (en utilisant MyBatis) J'ai implémenté le traitement de l'authentification de connexion DB dans Spring Security (en utilisant MyBatis) Partie 2

Comment accéder aux informations utilisateur stockées dans la session avec le contrôleur après l'authentification de l'utilisateur comme décrit ci-dessus. Utiliser l'annotation du principal d'authentification

@Controller
public class Controller {
    
    @RequestMapping("/")
    public index(@AuthenticationPrincipal UserDetailsImpl userDetails) {
        System.out.println(userDetails.getUserId) // userId
        System.out.println(userDetails.getPassword) //password
        System.out.println(userDetails.getHoge) //hoge
    }

Bonus, comment se référer à Thymeleaf

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4"> <!--Ajoutez ceci et utilisez Spring Security de Thymeleaf-->

<!--réduction-->
<body>
  <h>Bonjour,<span sec:authentication="principal.userId"></span>M.</h> <!-- principal.Peut être référencé par le nom de la variable membre-->
</body>




Recommended Posts

Comment donner des informations utilisateur authentifiées à Spring Security autres que userId et mot de passe et comment s'y référer
C'était étonnamment facile. Comment mettre à jour les informations utilisateur sans entrer de mot de passe
Comment implémenter le processus d'authentification en spécifiant le nom d'utilisateur et le mot de passe dans Spring Boot
[Android 9.0 Pie] Exemple d'appels de strings.xml autres que Activity et Fragment
[Spring Boot] Comment se référer au fichier de propriétés