Cómo inyectar el nombre de usuario (no la autenticación)?

slartidan:

En mi solicitud de inicio de la primavera, en mis controladores de descanso, me inyecto una instancia del juego Authenticationpara obtener información del usuario de la sesión.

Sin embargo, en todos esos controladores, me llamo actualmente un método de ayuda como esto:

@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`
}

¿Cómo puedo reducir la duplicación de código?

Özay humo:

Puede crear una clase de utilidad de la siguiente manera y luego se puede utilizar de esta manera UserUtility.getUsername()siempre que se necesite.

public class UserUtility {

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

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=179793&siteId=1
Recomendado
Clasificación