- 24.01.11) TIL2024년 01월 11일 19시 50분 05초에 업로드 된 글입니다.작성자: oneseel
로그인을 하지 않은 비회원 상태에서 게시글 조회는 가능하다.
만약 비회원이 게시글 생성이나 수정, 삭제를 하면 어떻게 될까?
"message": "Cannot invoke \"com.example.gamecommunity.global.security.userdetails.UserDetailsImpl.getUser()\" because \"userDetails\" is null"포스트맨으로 테스트해보니 위와 같은 오류가 발생했다. 당연하게도 UserDetail의 값을 넣지 않았으니 null이라 오류가 발생했다. 이걸 예외처리 해주기 위해 아래와 같은 방법을 사용했다.
// 비회원에게 허용되지 않은 API를 사용할 때 예외처리 @Bean public AuthenticationHelper authenticationHelper() { return new AuthenticationHelper(); } public static class AuthenticationHelper { public User checkAuthentication(UserDetailsImpl userDetails) { if (userDetails == null) { throw new BusinessException(HttpStatus.UNAUTHORIZED, ErrorCode.AUTHENTICATION_EXCEPTION); } return userDetails.getUser(); } }
// 게시글 삭제 @DeleteMapping("/{postId}") public ResponseEntity<?> deletePost( @PathVariable Long postId, @AuthenticationPrincipal UserDetailsImpl userDetails) { User loginUser = authenticationHelper.checkAuthentication(userDetails); // 바뀐 코드 postService.deletePost(postId, loginUser); return ResponseEntity.ok(ApiResponse.ok("게시글 삭제 성공", null)); }
위와 같이 코드를 바꾸고 다시 포스트맨으로 확인해보니, 401번이라는 코드와 함께 아래와 같이 출력되었다.
"message": "로그인하고 이용해주세요."'TIL' 카테고리의 다른 글
24.01.16)TIL (0) 2024.01.16 24.01.12) TIL (1) 2024.01.13 24.01.09) TIL (0) 2024.01.09 24.01.08) TIL (1) 2024.01.08 24.01.05) TIL (0) 2024.01.05 댓글