1️⃣ 현재 상태
🔹 로그인을 하지 않았는데도, 해당 페이지에 접근이 가능한 상황
🔹 로그인을 하지 않고, 해당 페이지에 접근하면 로그인 페이지로 리다이렉트할 예정이다.
2️⃣ 게시글 쓰기 화면 인증 체크 알고리즘
🔹
/board/saveForm 요청 Get이 온다.
🔹 session영역에 sessionUser 키값에 user 객체 있는지 체크
🔹 값이 null이면 로그인 페이지로 리다이렉션
🔹 값이 null이 아니면, /board/saveForm 으로 이동Java
@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 객체를 주입 받는 방법
Java
public class BoardController {
// HttpSession을 필드값으로 선언!
private final HttpSession session;
// BoadController 생성자의 매개변수로 Httpsession 주입
public BoardController(HttpSession session) {
this.session = session;
}HttpServletRquest객체로 접근하는 방법Java
public String temp (HttpServeletRqueset request) {
// HttpServeletRequest객체의 getSession 메소드를 사용한다.
HttpSession session = request.getSession();
}3️⃣ 해쉬맵 더 알아보기
🔹 해쉬맵에 매핑할 때, 키값=밸류를 put하면된다.
🔹 타입이 제네릭과 Object로 받기 때문에 밸류는 어떤 값이든 받을 수 있다.
🔹 다만 꺼내 쓸 때 다운캐스팅하여서 사용하여야 된다.
Java
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");