설치
pip install pyjwt
먼저 pyjwt 패키지를 설치합니다.
import jwt
아래 명령어를 해당 가상환경/프로젝트폴더에 입력한다.
# my_settings.py
SECRET_KEY='secret'
ALGORITHM = 'HS256'
JWT를 사용할때는 SECRET_KEY(절대 공개되면 안되는 값)과 알고리즘이 필요하다.
user.id = 1
access_token = jwt.encode({'id' : user.id}, SECRET_KEY, algorithm=ALGORITHM)
# SECRET_KEY와 ALGORITHM은 토큰발행했을때와 동일한 값을 넣는다.
>>> payload = jwt.decode(token_str, SECRET_KEY, ALGORITHM)
>>> payload
{'user_id': 1}
엔드포인트에 데코레이터를 구현한다.
데코레이터는 user app 디렉토리에 utils.py를 만들어 작성한다.
회원정보를 확인해야 하는 views.py에 데코레이터를 지정한다.
import jwt
from django.http import JsonResponse
from my_settings import SECRET_KEY, ALGORITHM
from .models import User
def login_decorator(func):
def wrapper(self, request, *args, **kwargs):
try:
access_token = request.headers.get('Authorization', None)
payload = jwt.decode(access_token, SECRET_KEY, algorithm=ALGORITHM)
user = User.objects.get(email=payload['email'])
request.user = user
except jwt.exceptions.DecodeError:
return JsonResponse({'message' : 'INVALID_TOKEN' }, status=400)
except User.DoesNotExist:
return JsonResponse({'message' : 'INVALID_USER'}, status=400)
return func(self, request, *args, **kwargs)
return wrapper