로그인 시 토큰 발급

찬민·2024년 9월 9일
0

TIL

목록 보기
51/62

Django에서 로그인 시 토큰 사용하기

프로젝트에서 로그인을 하면 토큰이 발급되는 것을 구현했어야 됬다. 그래서 Simple JWT와 같은 패키지를 사용해 토큰 기반 인증을 쉽게 구현하기로 했다.

1. 필수 패키지 설치

토큰 기반 인증을 구현하기 위해서는 djangorestframework-simplejwt 패키지를 설치해야 한다.

pip install djangorestframework-simplejwt

2. DRF 설정 파일 수정

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)

0개의 댓글