Spring-Boot Blog Project 9. 상세페이지 구현, 수정 삭제 구현
/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을 구현한다.
반응형
'SpringBoot' 카테고리의 다른 글
Spring Boot Project(in★ gram) 02. 데이터 모델 세팅하기 (0) | 2020.08.24 |
---|---|
Spring Boot Project(in★ gram) 01. 환경세팅하기 (0) | 2020.08.24 |
Spring-Boot Blog Project 9. 상세페이지 구현, 수정 삭제 구현 (0) | 2020.07.27 |
Spring-Boot Blog Project 8. 메인페이지에 글 노출 구현하기 (0) | 2020.07.27 |
Spring-Boot Blog Project 7. 글쓰기 구현하기 (0) | 2020.07.27 |