Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Python
- crosssitescripting
- rubiya
- Writeup
- 프로세스
- SQL Injection
- lordofsqlinjection
- 시스템
- XSS
- Los
- sqli
- 상호배제
- SQL
- ctf
- webhackingkr
- 해킹
- web
- 웹해킹
- hacking
- ubuntu
- CODEGATE
- 시스템프로그래밍
- webhacking.kr
- Linux
- 운영체제
- CCE
- 화이트햇콘테스트
- SQLInjection
- 알고리즘
- WebHacking
Archives
- Today
- Total
One_Blog
Django Simple JWT를 통한 Refresh / Access Token 발급 본문
728x90
settings.py에 다음과 같은 설정을 추가합니다.
SIMPLE_JWT = {
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=30),
'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
}
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'Marshmallow',
'rest_framework_simplejwt',
'rest_framework',
]
참고로 Installed_Apps에서는 rest_framework_simplejwt와 rest_framework만 추가하면 됩니다.
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework_simplejwt.authentication.JWTAuthentication',
],
}
아래 코드는 로그인 성공 시 Refresh / Access Token을 발급하는 코드입니다.
def user_login(request):
if request.method == 'POST':
id = request.POST.get('id')
password = request.POST.get('password')
try:
user = Marshmallow_User.objects.get(id=id)
except Marshmallow_User.DoesNotExist:
return JsonResponse({'success': 'fail to get user info'})
if password == user.password:
login(request,user)
token = RefreshToken.for_user(user)
refresh_token = str(token)
access_token = str(token.access_token)
response = JsonResponse({
"user": user.id,
"message": "login success",
"access_token": access_token,
"refresh_token": refresh_token,
})
response.set_cookie('access_token', access_token)
response.set_cookie('refresh_token', refresh_token)
return response
else:
return JsonResponse({'success': 'fail to login'})
else:
return JsonResponse({'error': 'Invalid request method'})
아래 코드는 RefreshToken을 기반으로 AccessToken을 발급해주는 코드입니다.
def getAccessToken(request):
refresh_token = request.COOKIES.get('refresh_token')
if refresh_token:
token = RefreshToken(refresh_token)
access_token = str(token.access_token)
response = JsonResponse({'access_token': access_token})
response.set_cookie('access_token', access_token, httponly=True)
return response
else:
return JsonResponse({'error':'error'})
해야할 게 많아서 가볍게 올려봤습니다.
RefreshToken기반 AccessToken발급 코드 짤 때 좀 헷갈렸어서 저 같이 헷갈리는 분 없으라고 가볍게 올려봅니다.
코드 짜면서 느낀 점 : 보안 전공 한 게 다행이다.
'웹 개발' 카테고리의 다른 글
빅데이터 분석 프로젝트 - 웹툰 장르 분석 (feat. 네이버웹툰, 카카오웹툰) (0) | 2023.12.08 |
---|---|
데이터베이스 - 시험 대비 정리 (1) | 2023.04.27 |