drf에서 jwt 사용해보기
localStorage 의 데이터는 key-value 쌍으로 저장됩니다.
우리는 서버로 부터 응답받은 JWT 정보를 localStorage 에 넣어놓고 인가를 필요로 하는 요청을 할 때 access 토큰을 header 에 담아서 전달할 수 있습니다.
토큰 인증 방식
토큰은 username, user_id 등 사용자를 설명할 수 있는 데이터를 포함한다. 이러한 데이터를 클레임(claim)이라고 한다.
VERIFY SIGNATURE
$ pip install djangorestframework-simplejwt
# settings.py에 넣어주기
'DEFAULT_AUTHENTICATION_CLASSES':
'rest_framework_simplejwt.authentication.JWTAuthentication',
],
INSTALLED_APPS = [
'rest_framework_simplejwt',
]
# 아래는 user앱폴더에 urls.py
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'),
]
from datetime import timedelta
SIMPLE_JWT = {
# Access 토큰 유효 시간 설정하기
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5),
# Refresh 토큰 유효 시간 설정하기
'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
'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),
}
기본적인 사용법이다. urls.py 는 내가 쓰는 api url 로 수정을 해주면 된다.
mock api란?
Mockup(모형) API Server(Mock API라고도 함)는 말 그대로 가짜 API 서버이다. 클라이언트 요청에 실제 서버처럼 동작하기보다는 미리 저장된 데이터를 단순하게 돌려주는 형태이다. 다시 말해 이는 가짜 서버를 사용해 실제 서버와 통신하는 것처럼 만들 수 있다.