🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

[2:32] jwtToken을 전달을 못 시키고, 401 에러가 뜨는데요..

22.05.06 02:13 작성 조회수 1.79k

0

코딩은 틀린게 없는데, 왜 못 받는지 모르겠네요...

 

우선, 리액트의 PostList.js는 

 

 

 

 

이렇게 코딩하였고, 터미널에서는 

 

이렇게 응답이 오구요...

장고의 views.py는

 

이렇게 되어 있습니다. 

 

jwtToken도 잘 받아오는 듯 한데요...

401 에러가 계속 뜨더라구요. 

장고 터미널에서는 

 

요런 메시지만 계속 뜹니다. 

 

 

 

답변 1

답변을 작성해보세요.

0

안녕하세요.

401 응답은 인증정보가 없거나 있더라도 검사에 실패했다는 오류입니다.

JWT 라이브러리의 경우 access token의 expire 시간이 5분일 것입니다. 혹시 5분이 지나셨다면 다시 로그인을 통해 JWT Token을 다시 받은 후에, 새롭게 받은 토큰으로 API 요청을 수행해보세요.

다음의 과정으로 차근차근 체크해보세요. 대개 답은 사소한 곳에 있습니다.

1. 현재 로컬의 JWT Token 값을 확인해보세요. https://jwt.io/ 사이트를 통해서도 토큰을 디코딩하셔서 exp 클레임을 확인해보실 수 있습니다. exp는 만료시간 timestamp입니다. 파이썬에서 현재 시간 timestamp는 import time; print(time.time())을 통해서 확인해보실 수 있습니다. 만료시간은 현재시간보다 값이 커야만 합니다.

2. 브라우저 개발자도구의 Network 탭에서 401 응답을 받는 요청을 클릭하셔서, 세부 요청 내역을 살펴보세요. 요청 헤더 Authorization에 1)에서 확인한 Token이 정확하게 전달이 되고 있는 지 확인해보세요.

3. 엉뚱한 APIView에서 요청을 처리하고 있을 수 있습니다. 내가 의도한 APIView에서 처리가 되고 있는 지, URL 라우팅을 잘 확인해보세요.

4. 요청을 받은 APIView의 authentication_classes를 확인해보세요. 그리고 settings.REST_FRAMEWORK의 DEFAULT_AUTHENTICATION_CLASSES도 확인해주세요. 각 설정에 jwt 인증 클래스가 필히 지정이 되어있어야만 합니다.

클라이언트 구현 부담을 없앤 상황에서 서버쪽 세팅을 우선 확인해보시는 것도 한 방법입니다. httpie 혹은 postman 프로그램이 좋습니다.

이 기회에 DRF의 인증을 차근차근 체크해보시며, 이해도를 올려보세요.
질문도 다양하게 주시구요.

화이팅입니다. :-)

채널톡 아이콘