파이썬/장고
django simple-jwt payload 확장하기
글을 쓰는 개발자
2021. 6. 22. 20:50
반응형
pip install djangorestframework-simplejwt
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'myuser.apps.MyuserConfig',
'rest_framework_simplejwt', ## 적어주세요 '_' 주의!!
'blog.apps.BlogConfig'
]
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_simplejwt.authentication.JWTAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticatedOrReadOnly',
), # login작업이외에 다른 views에서 토큰을 사용할 때 필요하다.
}
views.py
from django.shortcuts import render
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer
from rest_framework_simplejwt.views import TokenObtainPairView
class MyTokenObtainPairSerializer(TokenObtainPairSerializer):
@classmethod
def get_token(cls, user):
token = super().get_token(user)
token['is_staff']=user.is_staff #확장
token['is_superuser']=user.is_superuser #확장
return token
class MyTokenObtainPairView(TokenObtainPairView):
serializer_class=MyTokenObtainPairSerializer
app 안에 있는 urls.py
from django.urls import path
from .views import MyTokenObtainPairView
urlpatterns=[
path('user/token/',MyTokenObtainPairView.as_view())
]
Github 주소: https://github.com/VIXXPARK/django-remind/blob/main/django-simple-jwt/myuser/views.py
VIXXPARK/django-remind
Contribute to VIXXPARK/django-remind development by creating an account on GitHub.
github.com
반응형