T.I.L Apr 26, 2023 (simple jwt 토큰 클레임 커스터마이징 중 만난 오류)
2023. 4. 27. 10:40ㆍT.I.L (Today_I_Learned)
발생한 오류
DRF로 개인과제를 진행중 simple jwt 공식문서를 따라 jwt 토큰을 커스터마이징 해서 payload에
어떤 정보를 보낼지 수정하던 중 계속해서 적용이 되지 않는 오류가 발생했습니다.
시도
우선 강의에서 나온 방법과 공식문서에서의 방법이 서로 상이해서 강의에 나온 방법을 따라
진행해 보았습니다. 강의를 따라 작성했을 경우에는 잘 적용이 되어 payload에 원하는 정보를
띄울 수 있었습니다.
그래서 simple jwt 공식문서에서 사용한 코드들을 전부 다시 꼼꼼히 살펴봤습니다.
문제를 발견한 부분은 더보기의 두 부분 입니다.
더보기
simple jwt - settings
SIMPLE_JWT = {
"ACCESS_TOKEN_LIFETIME": timedelta(minutes=5),
"REFRESH_TOKEN_LIFETIME": timedelta(days=1),
"ROTATE_REFRESH_TOKENS": False,
"BLACKLIST_AFTER_ROTATION": False,
"UPDATE_LAST_LOGIN": False,
"ALGORITHM": "HS256",
"SIGNING_KEY": settings.SECRET_KEY,
"VERIFYING_KEY": "",
"AUDIENCE": None,
"ISSUER": None,
"JSON_ENCODER": None,
"JWK_URL": None,
"LEEWAY": 0,
"AUTH_HEADER_TYPES": ("Bearer",),
"AUTH_HEADER_NAME": "HTTP_AUTHORIZATION",
"USER_ID_FIELD": "id",
"USER_ID_CLAIM": "user_id",
"USER_AUTHENTICATION_RULE": "rest_framework_simplejwt.authentication.default_user_authentication_rule",
"AUTH_TOKEN_CLASSES": ("rest_framework_simplejwt.tokens.AccessToken",),
"TOKEN_TYPE_CLAIM": "token_type",
"TOKEN_USER_CLASS": "rest_framework_simplejwt.models.TokenUser",
"JTI_CLAIM": "jti",
"SLIDING_TOKEN_REFRESH_EXP_CLAIM": "refresh_exp",
"SLIDING_TOKEN_LIFETIME": timedelta(minutes=5),
"SLIDING_TOKEN_REFRESH_LIFETIME": timedelta(days=1),
"TOKEN_OBTAIN_SERIALIZER": "rest_framework_simplejwt.serializers.TokenObtainPairSerializer",
"TOKEN_REFRESH_SERIALIZER": "rest_framework_simplejwt.serializers.TokenRefreshSerializer",
"TOKEN_VERIFY_SERIALIZER": "rest_framework_simplejwt.serializers.TokenVerifySerializer",
"TOKEN_BLACKLIST_SERIALIZER": "rest_framework_simplejwt.serializers.TokenBlacklistSerializer",
"SLIDING_TOKEN_OBTAIN_SERIALIZER": "rest_framework_simplejwt.serializers.TokenObtainSlidingSerializer",
"SLIDING_TOKEN_REFRESH_SERIALIZER": "rest_framework_simplejwt.serializers.TokenRefreshSlidingSerializer",
}
simple jwt - customizing token claims
...
SIMPLE_JWT = {
# It will work instead of the default serializer(TokenObtainPairSerializer).
"TOKEN_OBTAIN_SERIALIZER": "rest_framework_simplejwt.serializers.MyTokenObtainPairSerializer",
# ...
}
해결
사실 굉장히 간단하면서도 개인적인 실력 부족으로 인해 발생한 문제였습니다.
진행중인 DRF 개인과제의 settings.py에 작성한 위의 두 코드는 SIMPLE_JWT = {}로 중복되는 코드 인데,
가져다 쓰기에만 너무 급급했던 나머지 두 코드를 합쳐서 사용하지 않고 나눠서 중복되게 작성했던 것 입니다.
알게된 것
이번 오류를 해결하면서 앞으로는 공식문서를 활용하여 작업을 할 때에 항상 내가 어떤 것을 활용하려 하는지에 대한
이해를 하고 기능이 중복되지는 않는지 중복된다면 어떻게 합쳐야 하는지 확인해야 하는 것을 배운 것 같습니다.
사실 공식문서를 잘 살펴보기만 했어도 될 일 이었던 것일지 모르겠습니다.
'T.I.L (Today_I_Learned)' 카테고리의 다른 글
T.I.L Apr 28, 2023 (ERD 연습) (0) | 2023.04.28 |
---|---|
T.I.L Apr 27, 2023 (재귀함수의 이해) (0) | 2023.04.28 |
T.I.L Apr 25, 2023 (poetry로 패키지 설치 중 발생한 오류) (0) | 2023.04.25 |
T.I.L Apr 24, 2023 poetry 설치 & 가상환경 설정(Dependency Management for Python) (0) | 2023.04.24 |
T.I.L Apr 19, 2023 (thread) (0) | 2023.04.19 |