728x90
반응형
프롤로그
JWT 코드 관련해서 뭔가 이상함을 느끼고 계속해서 코드를 수정하고 있다.
2024.01.31 - [웹 개발] - [장고] 장고로 JWT 사용하기 #3
처음 공부하는 부분이고 이것저것 잘못된 정보를 배워와서 그런 가 잘못된 정보를 많이 넣어놨기에..
.코드만 수정하겠다.
userid, 이름, 이메일, 닉네임, 유저타입, 그 유저타입에 따른 정보들이 토큰에 추가가 될 것이다.
serializers.py
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer
from django.contrib.auth import get_user_model
User = get_user_model()
class CustomTokenObtainPairSerializer(TokenObtainPairSerializer):
@classmethod
def get_token(cls, user):
token = super().get_token(user)
# 사용자의 기본 정보 추가
token['id'] = user.id
token['name'] = user.name
token['email'] = user.email
token['nickname'] = user.nickname
token['user_type'] = user.user_type
# 사용자 유형에 따른 추가 정보 포함
if user.user_type == 'e':
try:
enterprise = user.enterprise
token['enterprise'] = {
'company_name': enterprise.company_name,
'company_code': enterprise.company_code,
'department': enterprise.department,
'position': enterprise.position
}
except User.enterprise.RelatedObjectDoesNotExist:
token['enterprise'] = None
elif user.user_type == 'i':
try:
individual = user.individual
token['individual'] = {
'school': individual.school,
'department': individual.department
}
except User.individual.RelatedObjectDoesNotExist:
token['individual'] = None
return token
토큰 값을 설정해주는 것이다.
이후
views.py
class CustomTokenObtainPairView(TokenObtainPairView):
serializer_class = CustomTokenObtainPairSerializer
views.py 에서 함수화 시켜주고
urls.py
urlpatterns = [
path("admin/", admin.site.urls),
path("signup/", include('signup.urls')),
path('login/', include('login.urls')),
path('api/token/', CustomTokenObtainPairView.as_view(), name='token_obtain_pair'),
path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
]
여기서, api/token/ 을 아까 설정한 토큰값 이름으로 설정해주면 끝
테스트
http://127.0.0.1:8000/api/token/
위 주소로 들어가 이메일와 비밀번호를 입력하면 리프레시 토큰과 액세스 토큰이 잘 넘겨준 것을 알 수 있다.
저 액세스 토큰을 프론트엔드 쪽에서 받아서 해석하면 되는데, 저 액세스토큰안에 내가 아까 설정해놓은 여러가지 정보들 값이 들어가있다.
에필로그
빠르게빠르게 합시다.
728x90
반응형
'웹 개발' 카테고리의 다른 글
[장고] 회원가입 기능 상세하게 마무리 (이메일 인증) (0) | 2024.03.08 |
---|---|
[장고] 회원가입시 이메일 인증하기(이메일 유효성 검사) #5 (1) | 2024.02.11 |
[장고] 장고로 JWT 사용하기 #3 (1) | 2024.01.31 |
[장고] 회원가입 DRF이용하여 만들기 #2 (0) | 2024.01.30 |
[장고] 프로젝트 Model 작성하기 #1 (1) | 2024.01.29 |