학습 정리 - session (2025.04.03)

수아·2025년 4월 3일
0

학습 정리

목록 보기
46/51
post-thumbnail

회고 리스트

장고 에서 session이 언제 생성되며 해당 테이블 컬럼 구조를 설명하시오.

- 로그인 할때

Django에서 세션은 기본적으로 로그인 시점에 자동으로 생성되지 않는다.
로그인을 할 때 django.contrib.auth 모듈을 사용하여 login( ) 함수를 호출하면 세션이 생성된다.
세션 ID는 쿠키로 클라이언트에 저장되며 해당 세션 ID와 관련된 데이터는 서버에 저장된다.
세션이 활성화되면 세션 ID를 포함하는 쿠키가 응답 헤더에 포함되어 브라우저로 전송된다.

- 세션에 값을 넣을때

세션에 값을 저장하는 순간에 세션이 생성된다.
뷰에서 request.session['key'] = value 와 같이 세션에 값을 할당하는 코드가 실행될 때 해당 세션이 없으면 새로운 세션이 생성되고 이미 세션이 있으면 기존 세션이 사용된다.
세션이 생성되면서 Django는 세션 데이터를 데이터베이스에 저장한다.
기본 설정에서는 django.contrib.sessions.backends.db를 사용하여 데이터베이스에 저장된다.

- 세션 테이블 구조

Django에서 세션 데이터를 관리하기 위해 기본적으로 django_session이라는 테이블을 사용한다.
이 테이블은 django.contrib.sessions 앱을 통해 자동으로 생성된다.

- session_key

: 클라이언트 쿠키와 매핑되는 고유 키로 로그인 시점이나 세션 값이 저장되는 시점에 새로 생성

- session_data

:세션 데이터가 JSON 형태로 직렬화되어 Base64로 인코딩되어 저장

- expire_date

: 세션이 만료되는 시간으로 세션이 만료되면 자동으로 삭제
(정 파일의 SESSION_COOKIE_AGE에 따라 만료 기간 지정)

# settings.py

# 세션 데이터 저장소 설정 (디폴트: 데이터베이스)
SESSION_ENGINE = 'django.contrib.sessions.backends.db'

# 세션 만료 시간 설정 (초 단위, 기본값: 2주)
SESSION_COOKIE_AGE = 1209600

# 브라우저 종료 시 세션 삭제 여부
SESSION_EXPIRE_AT_BROWSER_CLOSE = False

# 안전한 세션 쿠키 사용 여부
SESSION_COOKIE_SECURE = False

0개의 댓글