DRF Simple JWT
Posted on 2021-08-30 by GKSRUDTN99
Django Rest Framework
장고
DRF
JWT
1. 'djangorestframework-simplejwt'를 pip를 통해 설치한다.
2. INSTALLED_APPS
에 rest_framework_simplejwt
를 추가한다.
3. REST_FRAMEWORK
에 DEFAULT_AUTHENTICATION_CLASSES
를 정의한다.
# settings.py
REST_FRAMEWORK = {
# 명시적으로 PermissionClass를 지정하지 않았을 때, 기본으로 사용할 클래스를 지정하는 설정입니다.
# 인증을 사용하는 경우 Default를 isAuthenticated로 설정하는 것이 더 안전할 것 으로 생각하여 추가로 설정했습니다.
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_simplejwt.authentication.JWTAuthentication',
)
}
4. token을 얻고, 갱신할 수 있는 url을 설정하고, TokenObtainPairView
와 TokenRefreshView
를 연결한다.
# urls.py
from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView
urlpatterns += [
path(r'', TokenObtainPairView),
path(r'refresh', TokenRefreshView),
]
토큰 사용법
1. id pw를 post로 TokenObtinPairView에 전달하면, access Token을 발급받을 수 있다.
2. access Token을 header에 {'Authorization' : 'JWT {토큰내용}'} 과 같이 작성하여 전달하면 로그인 한 것처럼 사용할 수 있다.
3. Test를 위한 APIClient의 경우, 다음과 같이 token을 header에 붙일 수 있다.
self.client.credentials(HTTP_AUTHORIZATION='JWT ' + self.user_trump_token)
shell을 통해 토큰을 발급받기
1. RefreshToken 모듈 임포트
from rest_framework_simplejwt.tokens import RefreshToken
2. 토큰을 발급받고자 하는 사용자의 레코드를 user라고 할 때, 다음과 같이 발급받는다.
refresh = RefreshToken.for_user(user)
# refresh token
str(refresh)
# access token
str(refresh.access_token)