Handler Methods에서 사용자 인증 정보를 가져오고 싶은 경우 사용하는
SecurityContextHolder와 @Authenticationprincipal 차이
레거시 코드 리팩토링을 진행하던 도중 프로젝트에서 Controller의 Handler Methods마다 사용자 인증 정보를 가져오는 방식이 다르다는 것을 알게 되었다.
현재 프로젝트에서 사용하고 있는 방식은 총 2가지다.
단순히 Controller에서 회원 번호를 가져오는 것 이외에는 별다른 기능적 차이가 없었기에 이를 하나로 통일하여 전반적인 코드 컨벤션을 갖추고 싶었졌다.
하지만 단순히 @Authenticationprincipal로 통일을 하려고 하니 두 방식의 장단점 및 차이점을 잘 알지 못하였기에 공부를 하고 적용하고자 마음을 먹게 되었으며 최종적으로 이 포스팅을 작성하게 되었다.
SecurityContextHolder는 Application 어느 곳에서나 사용자 인증 정보를 가져오고 싶을 때 사용하고 @AuthenticationPrincipal Annotation은 특정적이게 Handler Methods에서 사용자 인증 정보를 직접적으로 주입받기 위해 사용되는 방법이다.
내가 개선하고자 한 부분은 Handler Methods에서의 공통된 사용자 인증 정보 접근 방식이었으므로 둘 중 보다 간결하게 사용자 인증 정보를 가져올 수 있는 @Authentication Annotation 방식을 채택하는 것이 더욱 효과적이라고 느꼈다.
따라서 최종적으로 해당 방식을 채택하였고 Handler Methods 마다의 공통화된 사용자 인증 정보 접근 로직을 얻을 수 있었다.