소개
이 글에서는 파이썬 Django와 JWT(JSON Web Token)를 활용하여 사용자 인증 시스템을 구현하는 방법을 소개합니다. JWT는 인증 정보를 안전하게 전달하기 위한 표준 방법으로 사용되며, Django는 웹 애플리케이션 개발에 많이 활용되는 프레임워크입니다.
단계
- Django 프로젝트 생성
- Django 인증 앱 설정
- JWT 관련 패키지 설치
- 사용자 모델 확장
- JWT 토큰 발급 및 인증
- API 엔드포인트 보호
1. Django 프로젝트 생성
먼저, Django 프로젝트를 생성합니다. 터미널에서 다음 명령어를 실행합니다:
$ django-admin startproject myproject
2. Django 인증 앱 설정
Django는 기본적으로 인증과 관련된 기능을 제공하며, 인증 앱을 설정하여 사용할 수 있습니다. myproject
디렉토리로 이동한 뒤, 다음 명령어를 실행합니다:
$ cd myproject
$ python manage.py startapp accounts
3. JWT 관련 패키지 설치
JWT를 사용하기 위해 필요한 패키지를 설치합니다. requirements.txt
파일에 다음 내용을 추가한 뒤, 패키지를 설치합니다:
django
djangorestframework
djangorestframework-simplejwt
$ pip install -r requirements.txt
4. 사용자 모델 확장
Django의 기본 사용자 모델을 확장하여 추가 필드를 포함한 커스텀 사용자 모델을 생성합니다. accounts/models.py
파일을 열고 다음 내용을 추가합니다:
from django.contrib.auth.models import AbstractUser
from django.db import models
class User(AbstractUser):
# 추가 필드
phone_number = models.CharField(max_length=20)
settings.py
파일을 열고 다음 내용을 추가합니다:
AUTH_USER_MODEL = 'accounts.User'
5. JWT 토큰 발급 및 인증
JWT 토큰 발급 및 인증을 위해 accounts/views.py
파일을 열고 다음 내용을 추가합니다:
from rest_framework_simplejwt.views import TokenObtainPairView
class TokenObtainPairView(TokenObtainPairView):
serializer_class = CustomTokenObtainPairSerializer
# Custom serializer
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer
class CustomTokenObtainPairSerializer(TokenObtainPairSerializer):
@classmethod
def get_token(cls, user):
token = super().get_token(user)
# 추가 정보 포함
token['phone_number'] = user.phone_number
return token
urls.py
파일을 열고 다음 내용을 추가합니다:
from accounts.views import TokenObtainPairView
urlpatterns = [
# ...
path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
# ...
]
6. API 엔드포인트 보호
인증이 필요한 API 엔드포인트를 보호하기 위해 settings.py
파일을 열고 다음 내용을 추가합니다:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework_simplejwt.authentication.JWTAuthentication',
],
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
],
}
마무리
이제 파이썬 Django와 JWT를 활용하여 사용자 인증 시스템을 구현할 준비가 되었습니다. 각 단계를 차례로 따라가며 실제 애플리케이션에 적용해보세요. 이를 통해 안전한 인증 시스템을 구축할 수 있을 것입니다.
#developer #python #django #jwt #authentication #webdevelopment