인간세상의 종말이 도래해따/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