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()하는 과정에서 일어났다.
userDetails가 null이라서 getUser()를 못 하는 것!
그렇다면 .equals(null)로 null인지 비교하면 되지 않을까?
정답은 놉!! 다시 또 오류를 뱉어낸다. equals는 String 값을 비교할 때 사용
객체 자체가 null인지 확인하기 위해서는 == null를 사용해야한다.
User user = null;
if (userDetails != null) user = userDetails.getUser();
이렇게 user에 null로 변수를 선언하고 userDetails가 null이 아닐 때만 getUser()를 사용하여 정보를 받아올 수 있다.
728x90
'개발일기 > Java' 카테고리의 다른 글
JPA Query 사용하기 (0) | 2023.03.23 |
---|---|
Cors 에러가 뜨는 이유와 해결 (0) | 2023.03.20 |
커스텀 한 예외를 글로벌로 예외 처리하기 (0) | 2023.03.17 |
Spring Security 사용 시 Swagger 설정 (0) | 2023.03.15 |
스프링 테스트 프레임워크 사용하기 (0) | 2023.03.11 |