웹심화 로그인 세션 처리

HTTP의 비상태성(Stateless)을 극복하고 사용자 상태를 유지하기 위해 사용하는 세션(Session) 기술을 정리했다.

Spring MVC에서 세션을 활용한 로그인 구현 방법을 분석했다.

HttpSession을 통한 상태 관리

자바 웹 개발에서는 HttpSession 객체를 사용하여 서버 메모리에 사용자 정보를 저장한다.

@PostMapping("/login")
public String login(String id, String pw, HttpServletRequest request) {
    User user = userService.authenticate(id, pw);

    if (user != null) {
        // 1. 인증 성공 시 세션 생성 및 정보 저장
        HttpSession session = request.getSession();
        session.setAttribute("loginUser", user);
        return "redirect:/home";
    }
    return "loginFail";
}

@GetMapping("/mypage")
public String myPage(HttpSession session) {
    // 2. 세션 정보 확인을 통한 로그인 상태 체크
    User user = (User) session.getAttribute("loginUser");
    if (user == null) return "redirect:/login";

    return "mypage";
}

세션 기반 로그인 프로세스

  • 로그인 요청: 사용자가 인증 정보를 전송한다.
  • 세션 생성: 서버는 인증 성공 시 고유 세션 ID를 생성하여 서버 메모리에 저장한다.
  • 세션 ID 전달: 생성된 ID를 쿠키에 담아 브라우저로 전송한다.
  • 상태 유지: 브라우저는 이후 요청 시 세션 ID를 포함한 쿠키를 전송하며, 서버는 이를 통해 사용자를 식별한다.

세션 관리 지침

로그아웃 시 session.invalidate()를 호출하여 정보를 제거해야 한다.

세션은 서버 자원을 소모하므로 저장 데이터 크기를 적절히 조절해야 한다.

사용자 편의성과 서버 부하 간의 균형 유지가 세션 관리의 핵심인 것 같다.

Author avatar

웨이호프

WordPress creator and blogger.

View all posts