즉, Spring Security 기본 설정에서는 principal == UserDetails 이므로 principal.getUsername()을 호출할 수 있음!
User는 userDetails를 객체화 시킨 것이라고 생각하면 됨
SecurityContext securityContext = SecurityContextHolder.getContext(); // 1. 전역 보안 컨텍스트 가져오기
Authentication authentication = securityContext.getAuthentication(); // 2. 현재 로그인한 사용자의 인증 정보 가져오기
Object principal = authentication.getPrincipal(); // 3. principal (UserDetails) 가져오기
if (principal instanceof UserDetails) {
UserDetails userDetails = (UserDetails) principal;
System.out.println("사용자 이름: " + userDetails.getUsername());
System.out.println("사용자 권한: " + userDetails.getAuthorities());
}