simple jwt
개념정리, 실습
Getting started - Simple JWT 5.2.0.post5+gcd4ea99 documentation
- 1) 가상환경에 pip install 로 simplejwt를 설치한다
pip install djangorestframework-simplejwt
- 2) 프로젝트 setting → REST_FRAMEWORK부분에 simplejwt 코드를 추가해준다
#settings.py
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES':
'rest_framework_simplejwt.authentication.JWTAuthentication'
- 3) SIMPLE_JWT 설정을 위한 기본 세팅을 추가해준다
#settings.py
SIMPLE_JWT = {
# Access 토큰 유효 시간 설정하기
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=15),
# Refresh 토큰 유효 시간 설정하기
'REFRESH_TOKEN_LIFETIME': timedelta(days=60),
'ROTATE_REFRESH_TOKENS': False,
'BLACKLIST_AFTER_ROTATION': False,
'UPDATE_LAST_LOGIN': False,
'ALGORITHM': 'HS256',
'SIGNING_KEY': SECRET_KEY,
'VERIFYING_KEY': None,
'AUDIENCE': None,
'ISSUER': None,
'JWK_URL': None,
'LEEWAY': 0,
'AUTH_HEADER_TYPES': ('Bearer',),
'AUTH_HEADER_NAME': 'HTTP_AUTHORIZATION',
'USER_ID_FIELD': 'id',
'USER_ID_CLAIM': 'user_id',
'USER_AUTHENTICATION_RULE': 'rest_framework_simplejwt.authentication.default_user_authentication_rule',
'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',),
'TOKEN_TYPE_CLAIM': 'token_type',
'TOKEN_USER_CLASS': 'rest_framework_simplejwt.models.TokenUser',
'JTI_CLAIM': 'jti',
'SLIDING_TOKEN_REFRESH_EXP_CLAIM': 'refresh_exp',
'SLIDING_TOKEN_LIFETIME': timedelta(minutes=5),
'SLIDING_TOKEN_REFRESH_LIFETIME': timedelta(days=1),
}
- 4) 프로젝트 폴더 url 셋업
- url을 연결해주기 위한 include 코드 작성
포함할 앱 이름.url
방식으로 작성한다
# project/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('user/', include('user.urls')),
]
- 5) user.urls.py
- access 토큰 발급을 위한
TokenObtainPairView
- Refresh 토큰 발급을 위한
TokenRefreshView
- access 토큰 발급을 위한
# user / urls.py
from django.urls import path
from user import views
from rest_framework_simplejwt.views import (
TokenObtainPairView,
TokenRefreshView)
urlpatterns =[
path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
]
- 6) user.test.py
- 실제로 로그인 했을 때, 토큰을 받는지 테스트코드 작성
- reverse 기능을 활용해서 name에 해당하는 url 주소를 가져온다
- 해당 url의 주소가 바뀌더라도 이름으로 가져오기 때문에 문제 없음!
# user / tests.py from django.urls import reverse from rest_framework.test import APITestCase from rest_framework import status from user.models import User as UserModel # Create your tests here. class LoginUserTest(APITestCase): def setUp(self): self.data = {'username':'youngsang', 'password': '1234'} self.user = UserModel.objects.create_user('youngsang', '1234') def test_login(self): response = self.client.post(reverse('token_obtain_pair'), self.data) self.assertEqual(response.status_code,200)
'개발_TIL' 카테고리의 다른 글
개발_TIL | 2022-07-01 (52) (0) | 2022.07.06 |
---|---|
개발_TIL | 2022-06-30 (51) (0) | 2022.07.06 |
개발_TIL | 2022-06-28 (49) (0) | 2022.06.28 |
개발_TIL | 2022-06-27 (48) (0) | 2022.06.28 |
개발_TIL | 2022-06-24 (47) (0) | 2022.06.28 |