전반적인 세션 개념
세션의 장점
- 서버에 사용자의 데이터를 저장하므로 보안상 우수
세션의 단점
- 서버에 사용자의 데이터를 저장하므로 서버의 부하 증가
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
- 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라 하더라도 생성되지 않음.