작성
·
59
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. jyl08840님,
질문하신 내용 관련해서, 맞습니다. @AuthenticationPrincipal
어노테이션을 사용하여 MemberVO
객체를 직접 가져올 수 있는 이유는 MemberVO
가 UserDetails
인터페이스를 구현하고 있기 때문입니다. Spring Security는 인증된 사용자의 정보를 SecurityContext
내에 Authentication
객체로 저장합니다. 이 Authentication
객체의 principal
필드에 UserDetails
타입의 객체가 저장되곤 합니다.
UserDetails
구현: MemberVO
가 UserDetails
를 구현함으로써 Spring Security가 인증 된 사용자 객체로 취급할 수 있고, SecurityContext
에 해당 객체가 저장됩니다.@AuthenticationPrincipal
사용: 이 어노테이션은 현재 인증된 사용자의 principal
객체를 컨트롤러 메서드에서 직접 주입받을 수 있게 해주는 역할을 합니다. MemberVO
가 UserDetails
를 구현했기 때문에, @AuthenticationPrincipal MemberVO memberVO
로 주입받는 것이 가능합니다.따라서, SecurityContext
에 저장되어 있는 MemberVO
를 직접적으로 컨트롤러에서 접근할 수 있게 되는 것입니다.
아래의 링크를 참고하시면 더욱 깊이 있는 정보를 얻으실 수 있습니다:
- Spring Security의 보안 객체(SecurityContext)와 인증(Authentication)에 대한 개념
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.