1

현재 프로젝트 인증을 위해 Django Rest Framework JWT를 사용하고 있습니다. BasicAuthentication, SessionAuthentication 및 JSONWebTokenAuthentication을 이미 구현했으며 사용자는 모든 새로운 세션에 대해 POST 메서드를 사용하여 토큰을 요청할 수 있습니다. 그러나 각 사용자가 생성 된 직후에 토큰을 만들고 (그리고 관리 섹션에서 볼 수도 있음) 싶습니다. 내가 views.py, models.py와 시리얼이 코드를 넣어 시도Django Rest Framework JWT로 수동 토큰 JWT

from rest_framework_jwt.settings import api_settings 

jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER 
jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER 

payload = jwt_payload_handler(user) 
token = jwt_encode_handler(payload) 

:이 토큰은 수동으로 사용하여 생성 될 수 있다고 곳

나는 장고 나머지 프레임 워크 JWT 문서를 살펴했다. py하지만 "사용자"에 대한 참조 오류가 계속 발생합니다.

이 코드 스 니펫이나 다른 방법을 올바르게 구현하는 방법에 대한 도움을 주시면 감사하겠습니다. 감사합니다.

답변

0

공식 문서의 예를 따르지 않았습니다. 왜냐하면 2 행과 3 행에서 오류가 발생했기 때문입니다. 내 구성에서 설정 경로에 예외가 발생합니다.

라이브러리 자체에서 함수를 직접 호출합니다.

from rest_framework_jwt.utils import jwt_payload_handler, jwt_encode_handler 

내 기능이

에서 얻는 아이디어를 입력으로 한 사전을 타고 token

from rest_framework_jwt.utils import jwt_payload_handler, jwt_encode_handler 

def create_token(platform_data: typing.Dict): 
    """ 
    System will search from userprofile model 
    Then create user instance 
    :param platform_data: 
    :return: 
    """ 
    # If found `userprofile `in the system use the existing 
    # If not create new `user` and `userprofile` 

    platform_id = platform_data.get('id') # Can trust this because it is primary key 
    email = platform_data.get('email') # This is user input should not trust 

    userprofile_qs = UserProfile.objects.filter(platform_id=platform_id) 
    if userprofile_qs.exists(): 
     # user exists in the system 
     # return Response token 
     userprofile = userprofile_qs.first() 
     user = userprofile.user 
    else: 
     # Create user and then bind it with userprofile 
     user = User.objects.create(
      username=f'poink{platform_id}', 
     ) 
    user.email = email # Get latest email 
    user.save() 
    UserProfile.objects.create(
     platform_id=platform_id, 
     user=user, 
    ) 

    payload = jwt_payload_handler(user) 
    token = jwt_encode_handler(payload) 
    return token 

희망을 반환 가정