[장고] JWT 사용하기 #4

2024. 2. 10. 21:02· 웹 개발
목차
  1. 프롤로그
  2. serializers.py
  3. views.py
  4. urls.py
  5. 테스트
  6. 에필로그
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  (2) 2024.01.31
[장고] 회원가입 DRF이용하여 만들기 #2  (1) 2024.01.30
[장고] 프로젝트 Model 작성하기 #1  (1) 2024.01.29
  1. 프롤로그
  2. serializers.py
  3. views.py
  4. urls.py
  5. 테스트
  6. 에필로그
'웹 개발' 카테고리의 다른 글
  • [장고] 회원가입 기능 상세하게 마무리 (이메일 인증)
  • [장고] 회원가입시 이메일 인증하기(이메일 유효성 검사) #5
  • [장고] 장고로 JWT 사용하기 #3
  • [장고] 회원가입 DRF이용하여 만들기 #2
성밍쟁
성밍쟁
성밍쟁 공붕방
너드인의 밤성밍쟁 공붕방
성밍쟁
너드인의 밤
성밍쟁
전체
오늘
어제
  • 분류 전체보기 (182)
    • 일상 (1)
    • 스펙업 (7)
      • 학회 (0)
      • 멋쟁이사자처럼 (2)
      • 2024 winter-study (5)
    • 코딩테스트 - 백준 (9)
    • 보안 스터디 (56)
      • 시스템 해킹 (10)
      • 리버스 엔지니어링 (0)
      • 웹 해킹 (38)
      • 암호학 (8)
    • bandit (15)
    • 웹 개발 (11)
    • 머신러닝 (0)
    • 데이터베이스 (9)
    • KnockOn (72)
    • DevOps (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 드림핵
  • /bin
  • 1074
  • 11656
  • 1193
  • 2563
  • 3Des
  • 9613
  • AES
  • Alias

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
성밍쟁
[장고] JWT 사용하기 #4
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.