1. saveForm에 글쓰기 화면 확인하기
2. 인증 비지니스 파악하기
- 클라이언트의 사용성을 따라 파악하기
- JsessionID 영역에 USER객체가 없는 사람 막기
- 로그인 페이지로 리다이렉션 시키기
3. 인증 체크 알고리즘
- /board/saveForm Get요청이 옴
- session 영역에 sessionUser 키 값에 user 객체가 있는지 체크하기
- 값이 null이면 로그인 페이지로 리다이렉션
아니면 /board/saveForm으로 이동
4. Session에 접근하는 방법
- DI
private HttpSession session; public BoardController(HttpSession session) { this.session = session; }
- request 객체로 접근하기
파라미터로 들고와야 함
public String 메서드명(HttpServletRequest request) { HttpServletRequest session = request.getSession(); return 값; }
5.해시맵 알아보기
HashMap<String, Object> map = new HashMap<>(); map.put("sessionUser", "안녕"); map.put("name", 1.0); String sessionUser = (String) map.get("sessionUser"); Double name = (Double) map.get("name");
6.인증 로직 구현하기
- BoardController에서 saveForm에 구현하기
package shop.mtcoding.blog.board; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpSession; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.ResponseBody; import shop.mtcoding.blog.user.User; import java.util.List; @RequiredArgsConstructor @Controller public class BoardController { private final HttpSession session; // DI private final BoardRepository boardRepository; // DI // http://localhost:8080?page=0 @GetMapping({ "/", "/board" }) public String index(HttpServletRequest request) { List<Board> boardList = boardRepository.findAll(); request.setAttribute("boardList", boardList); return "index"; } @GetMapping("/board/saveForm") // /board/saveForm Get요청이 옴 public String saveForm() { // session 영역에 접근하기 위한 // 1. session 영역에 sessionUser 키 값에 user 객체가 있는지 체크하기 User sessionUser = (User) session.getAttribute("sessionUser"); // 2. 값이 null이면 로그인 페이지로 리다이렉션 if(sessionUser == null) { return "redirect:/loginForm"; } // 3. null이 아니면 /board/saveForm으로 이동 return "board/saveForm"; } // 상세보기시 호출 @GetMapping("/board/{id}") // 1이 프라이머리키 -> 뭐든 넣어도 실행시키려면 변수화시켜서 {} public String detail(@PathVariable int id) { System.out.println("id : "+id); return "board/detail"; } }
Share article