[홈페이지 제작] 게시판 만들기 5 - 글쓰기 권한 설정, 게시글 유효성 검사

Feb 07, 2024
[홈페이지 제작] 게시판 만들기 5 - 글쓰기 권한 설정, 게시글 유효성 검사
 
 
지난 블로그에서 게시글 쓰기 기능을 만들었다.
 
이번 블로그는 게시글 쓰기의 권한을 설정한다.
 

1. 게시글 권한 체크

 
notion image
 
notion image
 
게시글 쓰기를 만들기 전에 권한 설정을 해야한다. 글쓰기 페이지는 로그인 하지 않은 상태에서는 활성화되지 않지만, /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"; }
 
notion image
 
/board/saveForm 을 연결하면 login 페이지로 리다이렉션된다.
 

로그인 하지 않고 데이터 전송

notion image
 
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 요청에서 바디데이터가 있다면 유효성 검사를 해야 한다. 지금은 간단하게 길이에 대한 유효성 검사만 한다.
 
notion image
 
 
notion image
 
내용이 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

{CODE-RYU};