지난 블로그에서 게시글 쓰기 기능을 만들었다.
이번 블로그는 게시글 쓰기의 권한을 설정한다.
1. 게시글 권한 체크


게시글 쓰기를 만들기 전에 권한 설정을 해야한다. 글쓰기 페이지는 로그인 하지 않은 상태에서는 활성화되지 않지만, /board/saveForm 으로 직접 요청하면 접속된다. 따라서 로그인 하지 않은 상태에서는 로그인 페이지로 연결될 수 있도록 한다.
- /board/saveForm 으로 요청을 받음.
- 세션의 sessionUser의 User 객체를 확인
- 세션 값이 null 이면 로그인 페이지로 연결
- 세션 값이 있다면 글쓰기 페이지로 연결
@GetMapping("/board/saveForm")
public String saveForm() {
// sessionUser 의 세션 값 가져옴
User sessionUser = (User) session.getAttribute("sessionUser");
// 인증 검사
if(sessionUser==null){
return "redirect:/loginForm";
}
return "board/saveForm";
}

/board/saveForm 을 연결하면 login 페이지로 리다이렉션된다.
로그인 하지 않고 데이터 전송

postman 프로그램을 통해 로그인 하지 않고 데이터를 입력하면 로그인 페이지가 출력된다.
2. 유효성 검사
@PostMapping("/board/save")
public String saveWrite(BoardRequest.saveDTO requestDTO,HttpServletRequest request){
//1. 인증체크
User sessionUser = (User) session.getAttribute("sessionUser");
if(sessionUser==null){
return "redirect:/loginForm";
}
//2. 유효성 검사.
if(requestDTO.getTitle().length()>30){
request.setAttribute("status",400);
request.setAttribute("msg","title의 길이가 30자를 초과할 수 없습니다.");
return "error/40x"; //
}
if(requestDTO.getContent().length()>200){
request.setAttribute("status",400);
request.setAttribute("msg","내용은 200자를 초과할 수 없습니다.");
}
boardRepository.save(requestDTO,sessionUser.getId());
return "redirect:/";
}
Http 요청에서 바디데이터가 있다면 유효성 검사를 해야 한다. 지금은 간단하게 길이에 대한 유효성 검사만 한다.


내용이 200자가 넘으면 오류 페이지로 넘어간다. 에러 페이지는 동적 페이지로 만들었다.
error/40x.mustache
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>{{msg}}:{{status}}</h1> // request.setAttribute 를 통해 데이터를 전달받음
</body>
</html>
request.setAttribute(키:값) 으로 mustache에 전달하면 유효성 검사 때 동적페이지를 만들 수 있다.
Share article