Heestory

세션(Session)과 쿠키(Cookie)의 차이점과 사용 사례 본문

개발(0)/Java

세션(Session)과 쿠키(Cookie)의 차이점과 사용 사례

까만밀가루 2025. 1. 16. 00:25

지난 포스팅에 이어 웹 애플리케이션 개발에서 **세션(Session)**과 **쿠키(Cookie)**는 사용자 상태를 관리하는 데 중요한 역할을 합니다. 이번 포스팅에서는 세션과 쿠키의 차이점, 각각의 사용 사례, 그리고 Java Spring Framework를 활용한 대표적인 예제를 통해 개념을 명확히 정리해보겠습니다.

 


 

세션(Session)과 쿠키(Cookie)의 차이점

특징 세션 (Session) 쿠키 (Cookie)
저장 위치 서버에서 관리 클라이언트(브라우저)에 저장
보안 상대적으로 안전 (데이터가 서버에 저장됨) 보안에 취약 (클라이언트에서 접근 가능)
데이터 크기 제한 없음 (서버 메모리나 데이터베이스 의존) 4KB 제한
유지 시간 기본적으로 브라우저 종료 시 만료 (설정에 따라 유지 가능) 만료 시간을 설정하여 브라우저에서 유지
사용 사례 로그인 상태 관리, 민감한 데이터 저장 사용자 설정 저장 (언어, 테마), 방문 기록 관리

 

 


 

세션(Session) 사용 예제: 로그인 상태 유지

import javax.servlet.http.HttpSession;

@RestController
@RequestMapping("/user")
public class UserController {

    // 로그인 처리
    @PostMapping("/login")
    public String login(@RequestParam String username, HttpSession session) {
        // 세션에 사용자 정보 저장
        session.setAttribute("username", username);
        return "로그인 성공! 환영합니다, " + username;
    }

    // 사용자 정보 확인
    @GetMapping("/info")
    public String userInfo(HttpSession session) {
        // 세션에서 사용자 정보 가져오기
        String username = (String) session.getAttribute("username");
        if (username != null) {
            return "현재 로그인한 사용자: " + username;
        } else {
            return "로그인 상태가 아닙니다.";
        }
    }

    // 로그아웃 처리
    @PostMapping("/logout")
    public String logout(HttpSession session) {
        // 세션 초기화
        session.invalidate();
        return "로그아웃 완료!";
    }
}

 

[과정]

  1. 로그인 시 HttpSession을 사용해 서버에 사용자 정보를 저장합니다.
  2. 로그인 상태 확인 시 세션에 저장된 데이터를 확인해 사용자 정보를 반환합니다.
  3. 로그아웃 시 session.invalidate()를 호출해 세션을 삭제합니다.

 


 

 

쿠키(Cookie) 사용 예제 : 방문 기록 관리

 

@PostMapping("/login")
public String loginWithCookie(@RequestParam String username, HttpSession session, HttpServletResponse response) {
    // 세션에 로그인 상태 저장
    session.setAttribute("username", username);

    // 쿠키에 사용자 이름 저장
    Cookie userCookie = new Cookie("username", username);
    userCookie.setMaxAge(60 * 60 * 24 * 7); // 7일간 유지
    userCookie.setPath("/");
    response.addCookie(userCookie);

    return "로그인 성공! 환영합니다, " + username;
}

 

  • 세션으로 로그인 상태를 관리하면서, 쿠키로 사용자 이름을 저장해 브라우저에서 간단히 확인할 수 있도록 설정합니다.
  • 클라이언트와 서버 간 효율적인 상태 관리를 위해 세션과 쿠키를 결합해 사용할 수 있습니다

 


 

요약 정리

  • 세션은 보안이 중요한 데이터 관리 (로그인 상태, 민감한 정보)에 적합합니다.
  • 쿠키는 간단한 사용자 설정 저장 (테마, 언어)이나 방문 기록 관리에 유용합니다.