Cute Running Puppy
본문 바로가기
개발일기/Java

userDetails 유저 정보 받아오기 비회원일 때

by 징구짱 2023. 3. 19.
728x90

인증된 사용자에 대한 정보를 제공하기 위해 userDetails를상속받아 구현 중에

비회원은 어떻게 해야할까? 하는 의문이 생겼다.

 

전체 게시물이 보이는 화면에 좋아요 기능을 추가했는데 비회원과 회원 모두 볼 수 있는 화면인 것!

자신이 한 좋아요가 보이게 하기 위해 user정보를

userDetails를 상속 받은 UserDetailsImpl 클래스를 사용하여 가져왔는데

user가 null일 때 오류가 나는 것이다 ㅜㅜ

   @GetMapping("/post/{postId}")
   public ResponseEntity<ResponseDto<PostDetailResponseDto>> getPost(
           @PathVariable Long postId, 
           @AuthenticationPrincipal UserDetailsImpl userDetails) {
       return ResponseEntity.ok()
               .body(new ResponseDto<>("세부 조회 완료", 
                                        HttpStatus.OK.value()
                                        , postService.getPost(postId, user)));
   }

원인은 바로 userDetails.getUser()하는 과정에서 일어났다.

userDetailsnull이라서 getUser()를 못 하는 것!

 

 

그렇다면 .equals(null)로 null인지 비교하면 되지 않을까?

정답은 놉!! 다시 또 오류를 뱉어낸다. equals는 String 값을 비교할 때 사용

 

 

객체 자체가 null인지 확인하기 위해서는  == null를 사용해야한다.

 

User user = null;
if (userDetails != null) user = userDetails.getUser();

이렇게 user에 null로 변수를 선언하고 userDetails가 null이 아닐 때 getUser()를 사용하여 정보를 받아올 수 있다.

728x90