AttributeError : Invalid API setting: 'JWT_PAYLOAD_HANDLER' 해결하기

2025. 1. 28. 01:49·🕵️에러 해결사

1. 에러 상황

python, Django, VScode 환경에서 32bit 가상 환경을 만든 후 모듈들을 재설치하다가, 다음 에러를 만나게 되었다.

AttributeError : Invalid API setting: 'JWT_PAYLOAD_HANDLER'

이는 djangorestframework--simplejwt 라이브러리를 설치한 이후 발생한 문제였다.

 

일단 내 코드에서 JWT_PAYLOAD_HANDLER를 사용하는 코드를 찾아보자. 정확히는 터미널에 나온 로그를 확인하면 알 수 있다.

내 코드의 경우, settings.py와 serializers.py에서 사용하고 있었다.

 

#settings.py

JWT_AUTH = {
    "JWT_SECRET_KEY": SECRET_KEY, 
    "JWT_ALGORITHM": "HS256", # 암호화 알고리즘
    "JWT_ALLOW_REFRESH": True,
    "JWT_EXPIRATION_DELTA": timedelta(days=7), # 유효기간
    "JWT_REFRESH_EXPIRATION_DELTA": timedelta(days=28), # JWT 토큰 갱신 유효기간
}

 

#serializers.py

from rest_framework.settings import api_settings

JWT_PAYLOAD_HANDLER = api_settings.JWT_PAYLOAD_HANDLER
JWT_ENCODE_HANDLER = api_settings.JWT_ENCODE_HANDLER

# JWT 토큰 생성 함수
def generate_jwt_token(user):
    payload = JWT_PAYLOAD_HANDLER(user)
    return JWT_ENCODE_HANDLER(payload)

 

2. 에러 원인

해당 에러는 JWT_PAYLOAD_HANDLER가 최신 버전의 djangorestframework-simplejwt에서 더 이상 사용되지 않기 때문이다. simplejwt 를 사용하려면, JWT_PAYLOAD_HANDLER 대신 SIMPLE_JWT를 사용해주어야 한다.

 

djangorestframework-jwt를 기준으로 코드를 작성하다가, simplejwt로 바꾸었을 때 코드 상의 에러가 나는 것이다.

 

 

 

 

3. 해결

일반 JWT관련 코드들을 SIMPLE_JWT 코드로 변경하면 된다.

 

#settings.py

from datetime import timedelta

SIMPLE_JWT = {
    'ACCESS_TOKEN_LIFETIME': timedelta(days=1),  # 액세스 토큰 유효기간
    'REFRESH_TOKEN_LIFETIME': timedelta(days=7),  # 리프레시 토큰 유효기간
    'ROTATE_REFRESH_TOKENS': True,  # 리프레시 토큰 재발급 시 갱신
    'BLACKLIST_AFTER_ROTATION': True,  # 리프레시 토큰 사용 후 블랙리스트
    'ALGORITHM': 'HS256',  # 암호화 알고리즘
    'SIGNING_KEY': SECRET_KEY,  # 서명 키
}

 

#serializers.py

from rest_framework_simplejwt.tokens import RefreshToken

# JWT 토큰 생성 함수
def generate_jwt_token(user):
    refresh = RefreshToken.for_user(user)  # 특정 사용자 기반으로 리프레시 토큰 생성
    return {
        'refresh': str(refresh),  # 리프레시 토큰
        'access': str(refresh.access_token),  # 액세스 토큰
    }

'🕵️에러 해결사' 카테고리의 다른 글

Windows에서 Python 파일 경로 오류 해결하기: 올바른 경로 입력 방법 총정리  (0) 2025.03.11
"detail": "Given token not valid for any token type" 토큰 인증 오류 해결  (0) 2025.02.19
[Error]Id returned 1 exits status 에러 해결하기 (Dev C++)  (0) 2025.02.12
Spring Boot 프로젝트 실행 오류: Execution failed for task 해결 하기  (0) 2025.02.04
Spring Boot 프로젝트 실행 오류: Could not resolve all dependencies 해결하기  (0) 2025.02.04
'🕵️에러 해결사' 카테고리의 다른 글
  • "detail": "Given token not valid for any token type" 토큰 인증 오류 해결
  • [Error]Id returned 1 exits status 에러 해결하기 (Dev C++)
  • Spring Boot 프로젝트 실행 오류: Execution failed for task 해결 하기
  • Spring Boot 프로젝트 실행 오류: Could not resolve all dependencies 해결하기
고딩코난
고딩코난
godingconan 님의 블로그 입니다.
  • 고딩코난
    코딩의 고난
    고딩코난
  • 전체
    오늘
    어제
    • 분류 전체보기 (16)
      • 🔰프레임워크 (0)
        • 🧩Spring (0)
        • 🥭Django (0)
      • 📓프로그래밍 언어 (0)
        • 🍵Java (0)
        • 🐍Python (0)
      • 🖥️CS (0)
        • 분산 시스템 (0)
      • 🔓알고리즘 (2)
        • 🌿백준 (2)
      • 🎞️프로젝트 (0)
      • 💸도전! 수익 창출 (0)
      • 🔖Lesson Learned (2)
      • 🕵️에러 해결사 (7)
      • 🌐Web (1)
      • 🔧Git&Github (2)
      • 🛡️Cloud (2)
        • 📡AWS (1)
        • NCP (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준
    UDP
    합격
    1764
    TCP
    Spring
    IP
    spring 프로젝트
    꿀팁
    프로토콜
    네트워크
    정보처리기사 필기
    프로젝트 생성
    버전 오류
    종료 에러
    알고리즘
    C++
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
고딩코난
AttributeError : Invalid API setting: 'JWT_PAYLOAD_HANDLER' 해결하기
상단으로

티스토리툴바