[ 상태 코드 401, 403 ]

401 인증 안됨
403 권한 없음
출처
https://mangkyu.tistory.com/146
[ 문제 사항 ]
1. 화면을 보고 체크 해보자. - 인증 안됨 (401)

로그인이 안 되었는데 수정/삭제 버튼이 보인다. 고치자
2. 화면을 보고 체크 해보자. - 인증 안됨 (403)

지금 현재 ssar로 로그인 했는데, cos가 쓴 게시글에서 수정/삭제 버튼이 보인다. 고치자
3. BoardController 권한 체크(인증 포함)



이렇게하면 NullPointException이 터질 수 있다
로그인을 안하고 들어오면 세션이 null이잖아.
sessionUser에서 NullPointException이 터지겠지.
이 코드는 무조건 '로그인된 상태'에서 들어와야 함.
[ NullPointException 해결 ]

//내가 쓴 것 1

request.setAttribute() 메서드는 HttpServletRequest 객체에 데이터를 저장하기 위해 사용된다.
이는 컨트롤러에서 뷰로 데이터를 전달하기 위한 방법
"board/detail" 뷰 템플릿에서 ${board}와 ${pageOwner}라는 표현식을 사용하여
컨트롤러에서 설정한 "board"와 "pageOwner" 속성 값을 참조할 수 있다.
이 코드를 써서 머스태치에서 {board}, {pageOwner} 쓰는 것. 해시맵

//쌤 코드 2
PK로 비교

//이렇게 짜도 되나…? 아무튼 try-catch로 묶는게 좋다
@GetMapping("/board/{id}")
public String detail(@PathVariable int id, HttpServletRequest request) {
// 1. 모델 진입 - 상세보기 데이터 가져오기
BoardResponse.DetailDTO responseDTO = boardRepository.findById(id);
// 2. 페이지 주인 여부 체크 (board의 userId와 sessionUser의 id를 비교)
User sessionUser = (User) session.getAttribute("sessionUser");
boolean pageOwner;
if(sessionUser == null){
pageOwner = false;
}else{
int 게시글작성자번호 = responseDTO.getUserId();
int 로그인한사람의번호 = sessionUser.getId();
pageOwner = 게시글작성자번호 == 로그인한사람의번호;
}
request.setAttribute("board", responseDTO);
request.setAttribute("pageOwner", pageOwner);
return "board/detail";
}
//쌤 코드 3
짜는 방법은 이렇게 다양하다. (여기 적힌 것만 3개...)
[ detail.mustache ]


if 로직까지 넣어주니까 로그인을 안 하면 수정/삭제 버튼이 안나온다.

ssar로 로그인하니 cos가 쓴 건 수정/삭제 버튼이 안나온다!

ssar로 로그인하니까 ssar로 쓴 게시물은 수정/삭제 버튼이 보인다
Share article