지난 블로그에서 게시글 쓰기 기능을 만들었다.
이번 블로그는 게시글 쓰기의 권한을 설정한다.
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