Comment injecter le nom d'utilisateur (et non l'authentification)?

slartidan:

Dans ma demande de démarrage de printemps, dans mes contrôleurs repos, j'injecte avec succès une instance de Authenticationpour obtenir les informations de l' utilisateur de la session.

Cependant, dans tous ces contrôleurs, j'appelle actuellement une méthode d'aide comme ceci:

@GetMapping
public List<String> getData(Authentication auth) {
    String username = auth.getName().replaceFirst(".*?\\\\", ""); // to remove windows domain name
    // the rest of these methods only use variable `username`, never `auth`
}

Comment puis-je réduire cette duplication de code?

OZAY fumée:

Vous pouvez créer une classe utilitaire comme suit et vous pouvez l' utiliser comme ceci UserUtility.getUsername()où que vous soyez.

public class UserUtility {

    public static String getUsername(){
        if (SecurityContextHolder.getContext() != null && SecurityContextHolder.getContext().getAuthentication() != null) {
            return SecurityContextHolder.getContext().getAuthentication().getPrincipal());
        }
        return null;
    }
}

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=179791&siteId=1
conseillé
Classement