본문 바로가기
SpringBoot

Spring-Boot Blog Project 10. 삭제에 작성자 확인해서 권한 부여하기

by 김마리님 2020. 7. 27.

Spring-Boot Blog Project 9. 상세페이지 구현, 수정 삭제 구현

 

Spring-Boot Blog Project 9. 상세페이지 구현, 수정 삭제 구현

이전 포스트 >> Spring-Boot Blog Project 8. 메인페이지에 글 노출 구현하기 > Spring-Boot Blog Project 7. 글쓰기 구현하기 이제 홈페이지에 접속할때는 세션을 통해 인증이 없으면 로그인을 반드시 하도록 유

itstudy-mary.tistory.com

 

/controller/PostController.java

	private final PostRepository postRepository;
    
	@DeleteMapping("/post/{id}")
		public @ResponseBody CommonRespDto<?> deletePost(@PathVariable int id, HttpSession session) throws Exception{
			User principal=(User)session.getAttribute("principal");
			Post postEntity=postRepository.findOne(id);
			if(principal.getId()!=postEntity.getUserId()) {
				throw new MyRoleException();
			}

먼저 세션에서 인증값을 가지고 온다.

그리고, 이 포스트를 작성한 사람이 누군지 알아보기 위해 postRepository에서 작성자 id를 가져올 것이다.

수정 삭제가 구현되지 않는, 단순 셀렉트이기 때문에 트랜젝션을 요구하지 않는다. 따라서 서비스를 거치지 않고 바로 저장소로 이동한다.

 

/repository/PostRepositiry. java

package com.mary.blog.repository;

import java.util.List;

import com.mary.blog.controller.dto.PostDetailRespDto;
import com.mary.blog.model.Post;

public interface PostRepository {
	public void save(Post post);
	public List<Post> findAll();
	public PostDetailRespDto findById(int id);
	public Post findOne(int id);
	public void deleteContentById(int id);
	public void update(Post post);
}

 

post.xml

	<select id="findOne" resultType="com.mary.blog.model.Post">
		select *
		from post 
		where id=#{id}
	</select>

 

여기서 가져온 id와 세션의 아이디가 일치하면 권한을 부여하고, 일치하지 않으면 throw exception을 이용해 권한에 대한 exception을 구현한다.

반응형