logoStephen's 기술블로그

포스트 검색

제목, 태그로 포스트를 검색해보세요

#블로그만들기_11 #게시글 쓰기 페이지 인증 체크

#블로그만들기_11 #게시글 쓰기 페이지 인증 체크
SpringWebApp
성훈 김
2024년 2월 7일
목차

1️⃣ 현재 상태

💡
🔹 로그인을 하지 않았는데도, 해당 페이지에 접근이 가능한 상황 🔹 로그인을 하지 않고, 해당 페이지에 접근하면 로그인 페이지로 리다이렉트할 예정이다.
notion image
 
 

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");