slartidan:
En mi solicitud de inicio de la primavera, en mis controladores de descanso, me inyecto una instancia del juego Authentication
para 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;
}
}