• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

principal에 넣어주는 값

22.02.02 16:07 작성 조회수 155

0

ajaxauthenticationprovider 에서 인증이 성공하면 accontContext.getAccount()를 담은 토큰을 반환해주는데... principal 프로퍼티에는 UserDetails 구현체가 들어가야 하는것 아닌가요?? account는 그냥 entity이고 accountContext가 User를 상속해서 UesrDetails 구현체니깐 accountContext가 들어가는게 맞는것 같다는 생각이 들어 질문드립니다.

 

미리 답변 감사드립니다.!

답변 1

답변을 작성해보세요.

0

일반적으로 principal 속성에는 말씀하신 UserDetails 타입의 객체를 저장합니다.

그렇다고 반드시는 아닙니다.

principal 속성은 Object 타입이기 때문에 어떠한 타입도 저장이 가능합니다.

강의에서는 AccountContext 클래스가 UserDetails 타입을 구현했지만 실제 사용자의 정보를 담은 클래스는 Account 엔터티입니다.

그렇기 떄문에 DB 에 있는 사용자 정보를 참조하기 위해서 principal 속성에 Account 엔터티를 저장한 것입니다.

그렇지 않고 만약 Account 엔터티에 있는 속성들을 AccountfContext 클래스에도 생성한다음 값을 저장한다면 AccountContext 객체를 principal 에 저장하는 것도 괜찮습니다.

개발 편의에 따라서 정하시면 됩니다.