본문 바로가기

Python/Django

[Django] django-session-timeout은 뭐야?

728x90

django-session-timeout은 session을 종료할 수 있는 시간을 지정할 수 있는 패키지입니다. 한번 로그인한 홈페이지에서 컴퓨터를 종료하기 전까지 로그아웃이 되지 않으면 보안상의 문제가 발생할 수도 있습니다. 따라서 여러 웹페이지들은 마지막 활동 시점을 기준으로 지정 시간 동안 활동이 없으면 session을 종료시키게 됩니다. 이러한 기능을 django에서는 django-session-timeout 패키지를 통해 구현이 가능합니다. 다음은 설치 코드입니다.

 

pip install django-session-timeout

 

설치가 완료되면 project에 있는 settings.py에서 코드를 수정해야합니다. 우선 MIDDLEWARE 설정에 가서 다음의 코드들이 추가되어 있는지 확인합니다.

 

MIDDLEWARE_CLASSES = [
    # ...
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django_session_timeout.middleware.SessionTimeoutMiddleware',
    # ...
]

 

코드를 추가하였다면 SESSION_EXPIRE_SECONDS에 원하는 값을 넣어줍니다. 이때 SESSION_EXPIRE_SECONDS에 넣는 값은 단위는 초로 해당 값에 따른 시간 이후에 session이 종료되게 됩니다. 코드는 다음과 같습니다.

 

SESSION_EXPIRE_SECONDS = 3600  # 1 hour

 

다음은 SESSION_EXPIRE_AFTER_LAST_ACTIVITY입니다. SESSION_EXPIRE_AFTER_LAST_ACTIVITY 값을 지정해주지 않는다면 session은 로그인 후 1시간 후에 종료되게 됩니다. 특수한 경우가 아니라면 해당 값을 True로 설정해주어 사용자가 마지막 활동을 한 시점 후부터 SESSION_EXPIRE_SECONDS가 측정되게 해줍니다. 설정 코드는 다음과 같습니다.

 

SESSION_EXPIRE_AFTER_LAST_ACTIVITY = True

 

다음은 SESSION_EXPIRE_AFTER_LAST_ACTIVITY_GRACE_PERIOD입니다. SESSION_EXPIRE_AFTER_LAST_ACTIVITY_GRACE_PERIOD값은 SESSION_EXPIRE_AFTER_LAST_ACTIVITY와 관련이 있는 값으로 default는 1이지만 60으로 설정한다면 마지막 활동 이후 60초가 지난 후에 SESSION_EXPIRE_SECONDS가 계산되게 됩니다. 코드는 다음과 같습니다.

 

SESSION_EXPIRE_AFTER_LAST_ACTIVITY_GRACE_PERIOD = 60 # group by minute

 

마지막으로 SESSION_TIMEOUT_REDIRECT입니다. session이 종료된 후에 이동할 url을 작성해줍니다. 로그인 화면 또는 메인 화면을 주로 설정합니다. 설정 코드는 다음과 같습니다.

 

SESSION_TIMEOUT_REDIRECT = '원하는 redirect url을 작성해주세요!!/'
728x90

'Python > Django' 카테고리의 다른 글

[Django] Serializer가 뭐야?  (0) 2021.07.13
[Django] post_save()는 뭐야?  (0) 2021.07.12
[Django] APIView, api_view가 뭐야?  (0) 2021.07.07
[Django] ImageField 저장 시 이름 변경하기  (0) 2021.07.02
[Django] related_name은 뭐야?  (0) 2021.07.01