Djnago Rest-Framework JWT 认证

问题描述 投票:0回答:1

这是我用于在 jwt 上创建令牌的注册 api

class RegisterView(APIView):
    
    def post(self, request):
        serializer = RegisterSerializer(data=request.data)
        if serializer.is_valid():
            user = serializer.save()
            print(user)
            
            refresh = RefreshToken.for_user(user)
                
            return Response(
                {
                'status':200,
                'message':'Phone Number Registered Successfully',
                'refresh':str(refresh),
                'access': str(refresh.access_token) 
                }
                )
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

然后我想通过这个 api 更新该记录但是在使用 IsAuthenticated 时它给了我 user_not_found.

@api_view(['PUT'])
@permission_classes([IsAuthenticated])
def set_mpin(request):
    phone_number = request.data.get('phone_number')
    print(phone_number)
    
    if not phone_number:
        return Response({'status': 400, 'message':'phone number required'})
    
    try:
        registered_phone = Register.objects.get(phone_number=phone_number)
        print(registered_phone)
    except Register.DoesNotExist:
        return Response({'status': 400, 'message':'invalid phone number'})
    

    serializer = SetMpinSerializer(registered_phone, data=request.data)
    print(serializer)
    if serializer.is_valid():
        serializer.save()
        
        return Response({'status':200, 'message':'MPIN Successfully Created'})
    else:
        return Response({'status':400, 'message':'Invalid'})

有人能解决这个问题吗?

我想更新那个记录

python-3.x django django-rest-framework jwt django-rest-framework-simplejwt
1个回答
0
投票

您可能应该在请求的标头中传递请求用户的访问令牌。例如:

>>> import requests
>>> response = requests.put(url, headers={'Authorization': 'auth_scheme user_token'}, data={'phone_number': 'user_phone_number'})
© www.soinside.com 2019 - 2024. All rights reserved.