Django에서 세션 유지시간 설정하기

Posted by Pando on December 21, 2019

Django에서 세션 유지시간 설정하기

세션 시간을 조정하고 싶을 때가 있습니다.

Django에서는 Browser-length sessions vs. persistent sessions 라는 이름으로 이미 이를 조정할 수 있습니다.
다음에서 설명하는 변수는 모두 settings.py에서 넣어주면 됩니다.

1. 세션의 시간을 조정하고 싶은 경우

1-1. 브라우저가 닫힐 때 초기화하고 싶은 경우

SESSION_EXPIRE_AT_BROWSER_CLOSE (링크)
이름으로 알수 있듯이 브라우저가 닫히면 세션이 초기화됩니다.
default로 False이고 True를 settings.py에 직접 명시해주어야합니다.
그러나 Chrome같은 일부 브라우저에서는 브라우저를 닫아도 세션을 계속 탐색하는 설정으로 인해 브라우저가 닫혀도 세션이 만료되지 않을 수 있다네요.

1-2. 직접 시간을 정하고 싶은 경우

SESSION_COOKIE_AGE (링크)
세션의 수명을 정할 수 있습니다. 세션에 데이터가 수정 혹은 삭제되는 경우만 수명이 갱신됩니다.
default는 1209600 (2주) 초(second) 단위로 입력해주어야 합니다.
만약 12시간을 기준으로 잡는다고 하면, 43,200을 넣어주면 됩니다.

SESSION_COOKIE_AGE = 43200

그러나 이해하기 쉽게, 다음과 같이 작성하면 가독성이 좋아집니다.

SESSION_COOKIE_AGE = 60 * 60 * 12 # 초 / 분 / 시간

만약 세션이 수정되지않고도 사이트에 요청만으로도 세션의 유지시간을 갱신하고 싶다면,
SESSION_SAVE_EVERY_REQUEST (링크) 을 True로 확성화시키면 됩니다. (default는 False)

2. 세션의 시간을 영구적으로 유지하고 싶은 경우

고객의 편의를 위해 일부 사이트는 반복되는 로그인조차도 번거로울 수 있습니다.
이 때 1-1에서 언급한 SESSION_EXPIRE_AT_BROWSER_CLOSE의 시간을 늘리면 되겠지만 아무것도 안해도 2주간 유지되기 때문에 사실상 유저가 계속 활동하면 세션 유지시간은 갱신되므로 무한세션입니다.

마무리

Django에서 세션을 더 잘 다루고 싶다면 문서를 읽어주세요.

참고

장고 공식문서