1️⃣ 상태 코드의 이해
🔹 401번 응답코드 → 인증 실패
🔹 403번 응답코드 → 권한 없음

HTTP응답 코드에 대해서 더 알아보실려면 여기를 클릭👇
2️⃣ 현재 상태
🔹 현재 로그인이 되어있지 않은데 수정, 삭제 버튼이 보이는 상황
🔹 에러코드 401을 안내해주면 될 것 같다. → 인증 안됨

🔹 현재 로그인을 했는데, 다른 사람의 게시글에 수정, 삭제가 보이는 상황
🔹 에러코드 403을 안내해주면 된다. → 권한 없음

3️⃣ BoardController 권한 체크 (인증 포함)
🔹 게시물 주인 ID와 로그인 사용자 ID를 비교하여서 게시물의 수정 삭제 권한을 허가해줄 로직이 필요하다.


🔹 로그인 인증은 아주 자주 사용하니 생각안해도 할 수 있을 정도로 많이 반복해보자.
🔹 로직 처리 이후에 mustache 템플릿에 뿌려주는 문법도 잘 익혀야된다.
@RequiredArgsConstructor @Controller public class BoardController { private final BoardRepository boardRepository; private final HttpSession session; @GetMapping("/board/{id}") public String detail(@PathVariable int id, HttpServletRequest request) { // 모델에게 위임하고 상세데이터를 가져온다. BoardResponse.DetailDTO responseDTO = boardRepository.findById(id); // 현재 사용자가 로그인된 사용자인지 체크 (세션과 매칭하는지 체크) User sessionUser = (User) session.getAttribute("sessionUser"); boolean pageOwner; if (sessionUser == null){ //sessionUser에 값을 찾을 수 없다면 로그인하지 않은 사람 pageOwner = false; } else { // 게시물 주인 id와 session 사용자 id를 비교해서, 게시물의 수정 권한이 있는지 체크. int postOwnerId = responseDTO.getUserId(); int sessionUserId = sessionUser.getId(); pageOwner = postOwnerId == sessionUserId; } // mustache에서 아래 키워드와 매핑된 곳에 뿌려줌 request.setAttribute("pageOwner", pageOwner); // request가방에 담아서 화면에 렌더링할 수 있게해준다. // 아래 코드 예시로는 mustache에서 {{board}} 같이 문법을 쓰면 정보를 가져다 쓸 수 있다. request.setAttribute("board", responseDTO); return "board/detail"; }
Mustache 템플릿에 변수 매핑하는 법
🔹 매개변수로
HttpServletRequest request
객체를 넣는다.
🔹 해당 메소드 스코프에서 request.setAttribute (”매핑키값”, 처리된 로직 변수)
로 설정한다.
🔹 mustache
템플릿 문법에 따라서 매핑키값을 호출해주면 로직처리를 자바에서 한 뒤에 다시 반환 해준다.3️⃣ View 에 Mustache 반복문 적용
🔹 로긴사용자와 게시물 사용자가 일치 할 때만 수정, 삭제 버튼이 보이게 하면 된다.
🔹 Mustache의 조건문을 적용해주면 가능하다.
🔹 아까 권한을 검증로직을 처리했던 변수는
pageOwner
이다.Mustache 조건문
🔹
{{#변수}}
내용 {{/변수}}
← 이렇게 감싸주면 된다.
🔹 {{#pageOwner}}
내용{{/pageOwner}}
<- 이렇게 적용할 것이다. <!-- pageOwner가 참일경우에 아래 코드가 표시가 된다. --> {{#pageOwner}} <div class="d-flex justify-content-end"> <button class="btn btn-warning me-1">수정</button> <button class="btn btn-danger">삭제</button> </div> {{/pageOwner}}
테스트 확인1
🔹 ssar로 로긴한 상태에서 cos의 게시물에 수정, 삭제를 할 수 없다.

테스트 확인2
🔹 ssar로 로그인한 상태에서 자신의 게시물을 수정/삭제 할 수 있다.
