인간세상의 종말이 도래해따/Programming
[Django] Knox Authentication 사용자의 토큰 사용/접속 시 마다 토큰 유효 기간 늘이는 방법
민곰
2024. 6. 21. 18:28
728x90
Rest Framework 에서 Knox의 TokenAuthentication 을 사용하고 있습니다.
처음 로그인할 때 토큰이 발급되지만, 그 이후에 토큰의 유효시간이 끝나면
"토큰이 유효하지 않습니다" "Invalid Token"
이런 에러가 뜨면서 토큰을 더 이상 사용하지 못하게 되는데요.
작업을 계속하는 사용자 입장에서 토큰을 계속 사용해 왔다면 토큰의 유효시간을 갱신해줄 수 있도록 설정을 바꾸기로 했습니다.
# 개발환경
- Django 4.2.7
- Rest Framework
- Knox
# 설정 추가 방법
1. 프로젝트의 설정 파일 (앱 이름이 backend인 경우, backend/backend/settings.py) 열기
2. REST_KNOX 설정 변경
# knox 사용하기 위한 기반 설정값
INSTALLED_APPS = [
...
"knox"
]
REST_FRAMEWORK = {
"DEFAULT_AUTHENTICATION_CLASSES": (
"knox.auth.TokenAuthentication",
)
}
...
# Knox 인증 설정
REST_KNOX = {
'TOKEN_TTL': timedelta(hours=12), # 토큰 초기 유효기간 설정
'TOKEN_LIMIT_PER_USER': None,
'AUTO_REFRESH': True, # 토큰 사용될 때마다 TOKEN_TTL이 늘어나도록 하는 설정
'MIN_REFRESH_INTERVAL': 60 # AUTO_REFRESH 적용할 때 필수 (단위: 초)
}
...
여기서 AUTO_REFRESH 를 True 로 설정하고, MIN_REFRESH_INTERVAL을 설정해 주면 됩니다.
MIN_REFRESH_INTERVAL을 설정해주지 않으면, AUTO_REFRESH를 True로 변경해도 적용되지 않으니 중요해요!
저장하고 나서 서버를 다시 실행하면 적용됩니다.
도움이 되었길 바랍니다!
728x90