프로젝트 (Java)/예약마켓

[프로젝트] 30. 게시물 삭제시 본인만 가능하도록 예외 처리 추가

hihyuk 2024. 1. 31. 09:45

프로젝트에 게시물 삭제 기능을 추가하면서, 해당 기능에 보안을 강화하는 것은 매우 중요합니다. 특히, 게시물을 삭제할 수 있는 권한을 게시물의 소유자에게만 제한하는 것은 사용자의 데이터를 보호하는 데 필수적입니다. 이를 위해 본인만 게시물을 삭제할 수 있도록 예외 처리를 추가하는 방법을 구현했습니다.

 

PostController 수정

PostController에서는 게시물 삭제 요청을 처리하는 메소드를 구현합니다. 이 메소드는 AuthenticationUtils를 사용하여 현재 인증된 사용자의 ID를 가져온 후, 이를 PostServicedeletePost 메소드에 전달합니다.

    public void deletePost(
            @PathVariable("post_id") Long postId
    ){
        Long userId = AuthenticationUtils.getUserIdByToken();
        postService.deletePost(userId, postId);
    }

 

PostService 수정

PostService에서는 게시물 삭제 로직을 구현합니다. 이 로직에서는 먼저 게시물의 존재 여부를 확인하고, 요청을 보낸 사용자가 게시물의 소유자인지 검증합니다. 소유자가 아닌 경우, 적절한 예외를 발생시켜 접근을 차단합니다.

    @Transactional
    public void deletePost(Long userId, Long postId) {
        Post post = postRepository.findById(postId).orElseThrow(
                () -> new BadRequestException("존재하지 않는 게시물입니다.")
        );
        if (!userId.equals(post.getUser().getId())) {
            throw new BadRequestException("본인의 게시물만 삭제가 가능합니다.");
        }
        postRepository.deleteById(postId);
    }

 

결론

이 방식을 통해, 게시물 삭제 기능에 대한 접근을 게시물의 소유자에게만 제한함으로써, 사용자의 데이터 보호를 강화하고, 무분별한 데이터 삭제를 방지할 수 있습니다. 또한, 이러한 접근 제한은 사용자에게 애플리케이션에 대한 신뢰를 제공하며, 사용자 데이터의 무결성을 유지하는 데 도움이 됩니다.