본문 바로가기
IT 이야기/CRUD

[Spring] Spring Boot Security - principal

by Dblog 2021. 5. 30.
728x90

 

마이페이지 구현을 하면서 궁금한 점이 생겼다.

로그인할때 findByEmail 메소드로  유저 정보를 찾았고 null이 아닐때 로그에 성공했음을 확인했는데 그럼 이때 저장한 객체는 어떻게 사용할 수 있을까,?? 였습니다.

저장해둔 유저 객체를 가지고 마이페이지의 주문내역, 찜목록 조회를 하는데 쓰거나 유저정보를 수정하고 다시 저장할 때 사용할 수 있을것 같은데 따로 사용하는 방법이 궁금했습니다.

그래서 찾아보니 spring boot security에서 UserDetailsService를 상속 받아서 사용하면 @principal 어노테이션을 사용해서 로그인한 객체를 읽을 수 있습니다.

@Override
    public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
...
    }

UserDetails를 상속받으면 필수로 구현해야 하는 loadUserByUsername()에서 principal 객체를 생성하게 됩니다.

principal 객체는 따로 받을수 있지만 아래 코드처럼 @AuthenticationPrincipal 어노테이션을 사용해도 충분합니다.

 @PostMapping("/mypage/myInfo")
    @ResponseBody
    public UserEntity myInfo(@AuthenticationPrincipal CustomUser userEntity){
        return userServiceimpl.read(userEntity.getEmail());
    }

 

principal객체는 logout에 성공하면 제거됩니다.

728x90

'IT 이야기 > CRUD' 카테고리의 다른 글

[Spring] Thymeleaf template적용  (0) 2021.05.16
[Springboot] JPA적용  (0) 2021.05.02
[Spring] QueryDsl 적용  (0) 2021.04.21
[Spring CRUD] update,  (0) 2021.04.04
[Spring CRUD] read,  (0) 2021.03.24

댓글