Django (drf 및 simplejwt)에서 JWT 기반 인증을 정확히 어떻게 구현해야합니까?

user15135365

Django에서 JWT 기반 인증이 어떻게 구현되어야하는지 정확히 이해하기 위해 고군분투하고 있습니다 (저는 simplejwt를 사용하고 있습니다). 저는 초보자 일 뿐이니 어리석은 질문에 대비해주세요. rest-framework-simplejwt 문서는 매우 최소화되어 나와 같은 초보자에게 충분한 세부 정보를 제공하지 않습니다.

path('token/obtain', jwt_views.TokenObtainPairView.as_view(), name='token_create'),
path('token/refresh', jwt_views.TokenRefreshView.as_view(), name='token_refresh'),

그래서 공식 문서에서 제안한대로 urls.py에 경로를 만들었습니다. 여기서 어디로 가야하나요? 내 혼란은 코드에서 내 토큰을 발행해야하는 정확한 위치가 확실하지 않다는 사실에서 비롯된 것 같습니다. 사용자를 로그인하고 있다고 가정 해 보겠습니다. 따라서 토큰을 얻으려면 내 뷰에서 'token_create'엔드 포인트로 요청을 보내야합니까? 아니면 시리얼 라이저 중 하나에 어떻게 든 표시해야합니까? 'refresh_token'엔드 포인트는 어떻습니까? 사용해야하는 특정 방법이 있습니까?

그렇다면 토큰이 발행 된 후 어떻게해야합니까? 분명히 JWT를 사용하는 전체 목적을 처음부터 무너 뜨리기 때문에 데이터베이스에 저장해서는 안됩니다. 내 이해에 따르면 사용자의 후속 요청이 헤더에 토큰을 포함하도록 헤더에 첨부해야합니다.

프론트 엔드는 ReactJS로 작성되고 Django 백엔드 API와는 별도의 서버에 있으며 둘 간의 통신은 CORS를 통해 구성됩니다.

이 경우 헤더에 토큰을 첨부하고 사용자의 브라우저가 각 요청과 함께 토큰을 보내도록하려면 어떻게해야합니까? 그것에 유용 할 수있는 일종의 패키지가 있습니까?

호세인 헤이 다리

나는 당신이 모든 것을 혼합했다고 생각합니다. 나는 모든 것을 설명 할 것입니다.

JWT는 단순히 사용자에게 권한을 부여하는 방법입니다, 당신은 일반적으로 사용자를위한 토큰을 생성하는 엔드 포인트를 작성,이 엔드 포인트의 이름은 수 login, create_token'generate_token', 또는 아무것도! 정말 중요하지 않습니다!

그러나 특정 라이브러리를 사용하면 특정 끝점을 사용하도록 강요 할 수 있지만 Flask실제로는 원하는 것입니다.

login엔드 포인트는 사용자 이름과 비밀번호를 가져 와서 존재하고 올바른지 확인한 다음 PyJWTJWT 와 같은 라이브러리 를 생성합니다. 예를 들어 20 분 이상 만료되도록 JWT를 구성 할 수 있습니다. 일반적으로 데이터베이스에서 쿼리하는 것을 포함 하는 (JSON?)을 암호화 합니다. 사용자에게 제공하는 JSON의 예 :dictionaryuser_id

{
  "user_id": something,
  "role": something,
  ...
}

그런 다음 긴 문자열로 암호화됩니다.

이제 사용자가 요청을 보낼 때 요청의 Authorization헤더 로 긴 문자열이 있어야합니다 .

에서 postman --> Authorizations선택 Bearer Authorization하고 그 긴 문자열을 삽입합니다.

또한 사용자에게refresh_token .

다음은 사용자가 login엔드 포인트 를 호출 할 때 제공하는 JSON의 예입니다 .

{
 token: some_long_string,
 refresh_token: some_long_string,

}

그렇다면 새로 고침 토큰은 무엇입니까?

사용자가 사용자 이름과 암호를 다시 입력하도록하는 대신 기본 토큰이 만료 될 때를 호출하는 동안 제공 한 새로 고침 토큰을 전송하는 토큰 일뿐 login입니다.

한 가지 더 요점 : 이것은 구현해야하는 전체 흐름과 논리였습니다. 원하는대로하세요. 도서관이나 좋아하는 것은 중요하지 않습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

~ / .ssh / config 파일을 사용하여 GitHub에 대한 SSH 키 기반 인증을 설정하려면 어떻게해야합니까?

분류에서Dev

어떻게 봄 부팅에 JWT 인증을 기본 인증을 구현할 수있다?

분류에서Dev

Eve에서 쿠키 기반 인증을 어떻게 처리합니까?

분류에서Dev

Django 애플리케이션에서 AAD로 사용자 SSO를 어떻게 구현해야합니까 (Django Microsoft 인증 백엔드 모듈 사용)?

분류에서Dev

충돌 확인 방법을 어디에서 구현해야합니까?

분류에서Dev

C ++에서 태그를 기반으로 특정 기능을 실행하려면 어떻게해야합니까?

분류에서Dev

JWT 이해 및 테스트 케이스에서 simplejwt 만료 확인

분류에서Dev

Forge Viewer v7에서 사용자 지정 선택을 구현하려면 어떻게해야합니까?

분류에서Dev

jwt는 nodejs에서 RSA256 서명 확인을 어떻게 구현합니까?

분류에서Dev

Tensorflow에서 Tensor 마스킹 및 인덱싱을 정확히 어떻게 수행해야합니까?

분류에서Dev

Django의 함수 기반보기 내에서 코드 반복을 피하려면 어떻게해야합니까?

분류에서Dev

Node JS JWT 인증에서 역할을 어떻게 설정합니까?

분류에서Dev

fastparse에서 인용 된 정규식을 구문 분석하기 위해 구문 분석기를 구성하려면 어떻게해야합니까?

분류에서Dev

reduce ()에 대한 누산기 및 현재 인수를 어떻게 입력해야합니까?

분류에서Dev

django-simple-history 및 DRF를 사용할 때 개체 기록에 액세스하기위한 추가 작업을 어떻게 만들 수 있습니까?

분류에서Dev

~ / .ssh / config 파일을 사용하여 GitHub에 대한 SSH 키 기반 인증을 설정하려면 어떻게해야합니까?

분류에서Dev

"찾기 및 바꾸기"에서 내 선택을 어떻게 반전합니까?

분류에서Dev

재 작성으로 nginx 구성에 기본 인증을 추가하려면 어떻게해야합니까?

분류에서Dev

재정의 가능한 메서드에 대한 기본 구현을 제공하려면 어떻게해야합니까?

분류에서Dev

Android 및 REST로 인증을 구현하려면 어떻게해야합니까?

분류에서Dev

django의 기본 액세스 인증을 사용하여 클라이언트를 타사 사이트에 로그인하려면 어떻게해야합니까?

분류에서Dev

Get 및 Set 메서드는 C #에서 정확히 어떻게 사용되고 구현됩니까?

분류에서Dev

2D 캔버스에서 확대 / 축소 기능을 구현하려면 어떻게해야합니까?

분류에서Dev

키보드 크기에 따라 축소 및 확장보기를 올바르게 구현하려면 어떻게해야합니까?

분류에서Dev

MediaPalyer에서 "일시 중지"기능을 구현하려면 어떻게해야합니까?

분류에서Dev

주문 완료 후 향후 구매 확인 및 구매 정보 (내 앱에서 영수증 생성)를 얻으려면 어떻게해야합니까?

분류에서Dev

Elasticsearch에서 배열 필드로 정확히 구문을 찾으려면 어떻게해야합니까?

분류에서Dev

Jwt Bearer 인증을 어떻게 구성해야합니까?

분류에서Dev

한 행에서 정확히 3 번 발생하는 기준을 충족하는 ID에 대한 행을 반환하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    ~ / .ssh / config 파일을 사용하여 GitHub에 대한 SSH 키 기반 인증을 설정하려면 어떻게해야합니까?

  2. 2

    어떻게 봄 부팅에 JWT 인증을 기본 인증을 구현할 수있다?

  3. 3

    Eve에서 쿠키 기반 인증을 어떻게 처리합니까?

  4. 4

    Django 애플리케이션에서 AAD로 사용자 SSO를 어떻게 구현해야합니까 (Django Microsoft 인증 백엔드 모듈 사용)?

  5. 5

    충돌 확인 방법을 어디에서 구현해야합니까?

  6. 6

    C ++에서 태그를 기반으로 특정 기능을 실행하려면 어떻게해야합니까?

  7. 7

    JWT 이해 및 테스트 케이스에서 simplejwt 만료 확인

  8. 8

    Forge Viewer v7에서 사용자 지정 선택을 구현하려면 어떻게해야합니까?

  9. 9

    jwt는 nodejs에서 RSA256 서명 확인을 어떻게 구현합니까?

  10. 10

    Tensorflow에서 Tensor 마스킹 및 인덱싱을 정확히 어떻게 수행해야합니까?

  11. 11

    Django의 함수 기반보기 내에서 코드 반복을 피하려면 어떻게해야합니까?

  12. 12

    Node JS JWT 인증에서 역할을 어떻게 설정합니까?

  13. 13

    fastparse에서 인용 된 정규식을 구문 분석하기 위해 구문 분석기를 구성하려면 어떻게해야합니까?

  14. 14

    reduce ()에 대한 누산기 및 현재 인수를 어떻게 입력해야합니까?

  15. 15

    django-simple-history 및 DRF를 사용할 때 개체 기록에 액세스하기위한 추가 작업을 어떻게 만들 수 있습니까?

  16. 16

    ~ / .ssh / config 파일을 사용하여 GitHub에 대한 SSH 키 기반 인증을 설정하려면 어떻게해야합니까?

  17. 17

    "찾기 및 바꾸기"에서 내 선택을 어떻게 반전합니까?

  18. 18

    재 작성으로 nginx 구성에 기본 인증을 추가하려면 어떻게해야합니까?

  19. 19

    재정의 가능한 메서드에 대한 기본 구현을 제공하려면 어떻게해야합니까?

  20. 20

    Android 및 REST로 인증을 구현하려면 어떻게해야합니까?

  21. 21

    django의 기본 액세스 인증을 사용하여 클라이언트를 타사 사이트에 로그인하려면 어떻게해야합니까?

  22. 22

    Get 및 Set 메서드는 C #에서 정확히 어떻게 사용되고 구현됩니까?

  23. 23

    2D 캔버스에서 확대 / 축소 기능을 구현하려면 어떻게해야합니까?

  24. 24

    키보드 크기에 따라 축소 및 확장보기를 올바르게 구현하려면 어떻게해야합니까?

  25. 25

    MediaPalyer에서 "일시 중지"기능을 구현하려면 어떻게해야합니까?

  26. 26

    주문 완료 후 향후 구매 확인 및 구매 정보 (내 앱에서 영수증 생성)를 얻으려면 어떻게해야합니까?

  27. 27

    Elasticsearch에서 배열 필드로 정확히 구문을 찾으려면 어떻게해야합니까?

  28. 28

    Jwt Bearer 인증을 어떻게 구성해야합니까?

  29. 29

    한 행에서 정확히 3 번 발생하는 기준을 충족하는 ID에 대한 행을 반환하려면 어떻게해야합니까?

뜨겁다태그

보관