프로젝트에서 로그인을 하면 토큰이 발급되는 것을 구현했어야 됬다. 그래서 Simple JWT와 같은 패키지를 사용해 토큰 기반 인증을 쉽게 구현하기로 했다.
토큰 기반 인증을 구현하기 위해서는 djangorestframework-simplejwt 패키지를 설치해야 한다.
pip install djangorestframework-simplejwt
settings.py 파일에서 Simple JWT 설정을 추가해야 한다.
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_simplejwt.authentication.JWTAuthentication',
),
}
아래 예시는 로그인 시 성공적으로 인증되면 토큰을 반환하는 로그인 뷰를 구현한 코드이다.
from rest_framework_simplejwt.tokens import RefreshToken
from rest_framework.response import Response
from rest_framework.views import APIView
from django.contrib.auth import authenticate
from rest_framework import status
class LoginView(APIView):
def post(self, request):
user = authenticate(username=request.data['username'], password=request.data['password'])
if not user:
return Response({"error": "아이디 또는 비밀번호가 올바르지 않습니다"}, status=status.HTTP_400_BAD_REQUEST)
# 리프레시 토큰 및 액세스 토큰 생성
refresh = RefreshToken.for_user(user)
return Response({
'refresh': str(refresh),
'access': str(refresh.access_token),
}, status=status.HTTP_200_OK)