전반적인 세션 개념
- HTTP에서는 새로운 페이지를 요청할 때마다 새로운 연결하여 상태유지가 되지 않음.
- 사용자의 상태를 유지하기 위해 쿠키와 세션 사용
- 브라우저마다 상태 저장
- 세션의 데이터(사용자의 데이터)는 서버에 저장된다.
- 서버에서는 세션에 데이터를 저장하고, 세션ID를 쿠키로 클라이언트에 발급한다. (Set-cookie)
- 클라이언트는 발급받는 세션ID를 쿠키에 저장한다.
- https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Sessions
세션의 장점
- 서버에 사용자의 데이터를 저장하므로 보안상 우수
세션의 단점
- 서버에 사용자의 데이터를 저장하므로 서버의 부하 증가
Django에서의 Session
- 세션에 데이터를 저장하기 전까지는 Sessionid를 따로 클라이언트에 전송하지 않음.
- 세션에 데이터를 저장하는 순간부터 Sessionid를 클라이언트에 전달
- Django에서의 세션 사용법
def f(request):
...
request.session['저장할 데이터명'] = 값
- request.session : 현재 사용자/브라우저에 대한 세션, 딕셔너리처럼 사용 가능
- 세션에 데이터를 간접적으로 저장한 경우 따로 Django에 modified를 설정하여 데이터를 저장했음을 알려주어야 함.
- 예를들면 session에 리스트가 저장되어 있고, 리스트의 요소중 하나의 값을 바꿧다던지..
request.session.modified = True
Session 관련 Setting 몇가지(Settings.py)
- SESSION_COOKIE_AGE
- 세션 쿠키 지속기간(초), 기본값은 2주
- SESSION_COOKIE_HTTPONLY
- 세션 쿠키에 HttpOnly 설정, 기본값은 True
- 세션 쿠키를 JavaScript에서 읽는건 문제가 될 수 있으므로 False를 굳이??
- SESSION_COOKIE_NAME
- 세션 쿠키의 이름, 기본값은 sessionid
- SESSION_COOKIE_PATH
- 세션 쿠키의 경로, 기본값은 /
- SESSION_COOKIE_SECURE
- SECURE 옵션 사용여부, https를 사용한다면 True로 하는게 좋음.
- 기본값은 False
- SESSION_SAVE_EVERY_REQUEST
- 모든 request의 session 데이터 저장
- 원래는 session 데이터가 변경된 경우에만 저장
- session이 텅 빈 경우는 True라 하더라도 생성되지 않음.
'프레임워크 > Django' 카테고리의 다른 글
[ Django ] Q, F object (0) | 2021.10.20 |
---|---|
[ Django ] CSRFToken (0) | 2021.10.16 |
[ Django ] JWT(djangorestframework-simplejwt) (0) | 2021.10.15 |
[ Django ] JWT (0) | 2021.10.14 |
[ Django ] Choice (0) | 2021.09.15 |