1️⃣ 현재 상태
🔹 로그인을 하지 않았는데도, 해당 페이지에 접근이 가능한 상황
🔹 로그인을 하지 않고, 해당 페이지에 접근하면 로그인 페이지로 리다이렉트할 예정이다.

2️⃣ 게시글 쓰기 화면 인증 체크 알고리즘
🔹
/board/saveForm
요청 Get이 온다.
🔹 session
영역에 sessionUser
키값에 user
객체 있는지 체크
🔹 값이 null
이면 로그인 페이지로 리다이렉션
🔹 값이 null
이 아니면, /board/saveForm
으로 이동@RequiredArgsConstructor @Controller public class BoardController { private final BoardRepository boardRepository; private final HttpSession session; // 세션 생성자 주입 // /board/saveForm 요청(Get)이 온다 @GetMapping("/board/saveForm") public String saveForm() { // 세션 영역에 sessionUser 키값에 user 객체가 있는지 비교 User user = (User)session.getAttribute("sessionUser"); // 값이 null이면 로그인 페이지로 리다이렉션 // 값이 null이 아니면 /board/saveForm 로 이동 if (user == null ){ return "redirect:/loginForm"; } return "board/saveForm"; }
🔹 Session
에 접근하는 방법 더 알아보기
생성자를 통해서 IoC 객체를 주입 받는 방법
public class BoardController { // HttpSession을 필드값으로 선언! private final HttpSession session; // BoadController 생성자의 매개변수로 Httpsession 주입 public BoardController(HttpSession session) { this.session = session; }
HttpServletRquest
객체로 접근하는 방법public String temp (HttpServeletRqueset request) { // HttpServeletRequest객체의 getSession 메소드를 사용한다. HttpSession session = request.getSession(); }
3️⃣ 해쉬맵 더 알아보기
🔹 해쉬맵에 매핑할 때, 키값=밸류를 put하면된다.
🔹 타입이 제네릭과 Object로 받기 때문에 밸류는 어떤 값이든 받을 수 있다.
🔹 다만 꺼내 쓸 때 다운캐스팅하여서 사용하여야 된다.
HashMap<String, Object> map = new HashMap<>(); // 해쉬맵에 매핑할 때, 키값=밸류를 put하면된다. // 타입이 제네릭과 Object로 받기 때문에 밸류는 어떤 값이든 받을 수 있다. map.put("sessionUser", "안녕"); map.put("name", 1.0); // 다만 꺼내 쓸 때 다운캐스팅하여서 사용하여야 된다. String sessionUser = (String) map.get("sessionUser"); Double name = (Double) map.get("name");