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 |
댓글