쿠키와 세션

쿠키

  • 사용자가 브라우저를 닫을 때 삭제되는 임시 쿠키

  • 단일 브라우징 세션 동안 웹사이트에서 사용자 활동에 대한 정보를 유지하기 위해 일반적으로 사용

  • 유저 정보를 안전하게 유지할 수 있다

  • ex) 장바구니에 추가된 항목 또는 웹사이트 기본 설정 등

  • 사용자가 브라우저를 닫은 후에도 사용자의 장치에 남아 있는 쿠키

  • 만료 날짜가 있으며 여러 브라우징 세션에서 액세스할 수 있는 정보를 저장하는 데 사용

  • ex) 로그인 자격 증명, 언어 기본 설정 및 기타 사용자 지정 설정 등

세션

개념

  • stateless한 HTTP 통신에서 매번 로그인하지 않고도 클라이언트가 인증되었음을 확인하는 방법 중 하나이다.

  • 서버는 클라이언트의 정보를 유지하기 위해 세션 메모리를 할당해 클라이언트의 인증정보를 관리함

  • 클라이언트가 서버에 요청을 보내면, 서버는 세션 아이디를 쿠키에 담아 응답할 때 함께 전달

  • 클라이언트는 세션 아이디를 담은 쿠키를 매 요청마다 함께 전달

  • 매 요청마다 서버는 캐시, DB, 메모리 등에서 클라이언트로부터 받은 세션 아이디로 세션이 존재하는지 확인해야 하므로 token 방식에 비해 리소스가 든다.

  • 이 때 사용되는 쿠키의 종류는 session cookie이며, 서버가 종료되거나 유효기간이 만료되거나 클라이언트 브라우저가 종료되면 제거된다.

HttpSession

  • 자바 서블릿에서는 HttpSession 객체를 통해 세션을 사용할 수 있다.

  • 스프링에서 세션 방식을 제공하기 위한 표준화된 방식

  • 세션 저장과 조회를 쉽게 할 수 있도록 해주며, 만료된 세션을 자동으로 관리해준다.

  • SPRING_SESSION, SPRING_SESSION_ATTRIBUTE로 구성

    • SPRING_SESSION : 세션의 기본키와 ID, 생성 시간, 마지막 접속 시간, 유효 기간 등을 저장

    • SPRING_SESSION_ATTRIBUTE : 세션의 기본키와 어트리뷰트 이름, 바이트 형식의 직렬화된 객체를 저장

  • getattribute(), setattribute()로 세션의 어트리뷰트에 접근할 수 있다

https://javaee.github.io/javaee-spec/javadocs/javax/servlet/http/HttpSession.html

Last updated