Django не проверяет подлинность маркера доступа

Я использую JWT для аутентификации пользователей, при обращении к конечной точке login я получаю следующий вывод в Postman

{
    "message": "Login successful",
    "user_id": 2,
    "username": "Animesh0764",
    "tokens": {
        "refresh": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTczNjU5MTAxNywiaWF0IjoxNzM1Mjk1MDE3LCJqdGkiOiI4YmJhMTczZmZkNDg0OWIzODU3YTZkMDE1MDZlNzM2ZCIsInVzZXJfaWQiOjJ9.-wX6S9yxNgFCjIR8Tu0FRc-Q2ivFDMVJouXkKkjDNtI",
        "access": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzM1Mjk1OTE3LCJpYXQiOjE3MzUyOTUwMTcsImp0aSI6IjdhOWU3ZDA0NTllNzQxMzFhNDM1MWVlZjVkOWRiODcyIiwidXNlcl9pZCI6Mn0.LI6afRT66MFWTpomo1E9BHn5JTrRuGoTeX0EEwMRFvQ"
    }
}

При использовании этого токена доступа в представлении Bearer for Profile отображается:

{
    "detail": "User not found",
    "code": "user_not_found"
}

Посетил jwt.io и проверил свой токен, все вроде бы в порядке, он показывает правильный user_id, но все равно не проверяет. Представления для обоих вариантов приведены ниже

#Login user
class UserLoginView(APIView):
    def post(self, req):
        serializer = UserLoginSerializer(data=req.data)
        if serializer.is_valid(raise_exception=True):
            user = serializer.validated_data['user']
            return Response({
                "message": "Login successful",
                "user_id": user.id,
                "username": user.username,
                "tokens": get_tokens_for_user(user)
            }, status=HTTP_200_OK)
        return Response(
            {"message": "Login failed"},
            status=HTTP_400_BAD_REQUEST
        )

#View user profile
class UserProfileView(APIView):
    permission_classes = [IsAuthenticated]

    def get(self, req):
        print(f"Request user: {req.user}")
        print(f"User authenticated: {req.user.is_authenticated}")
        if req.user.is_authenticated:
            user = req.user
            serializer = UserProfileSerializer(user)
            return Response(serializer.data, status=HTTP_200_OK)
        return Response({"message": "Unauthorized"}, status=HTTP_401_UNAUTHORIZED)

Он должен проверить токен и затем показать ответ 200, но всегда показывает 401 Unauthorized

Добавил все необходимое в settings.py файл

можете ли вы предоставить весь код setting.py, view.py и urls.py

Прежде всего, посмотрите на свои настройки и перейдите к этому

` section.AUTHENTICATION_BACKENDS = [

'django.contrib.auth.backends.ModelBackend'

] ` И что делать? Существует ли этот раздел или нет? Если да, то каков его порядок? В каком бы порядке он ни был установлен, не говорите ему аутентифицироваться, он будет действовать в том порядке, в котором он находится в этом списке. Теперь, если вы хотите использовать пользовательскую систему аутентификации, нам нужно добавить ее. Например, создайте в приложении секцию аутентификации для логики карты и поместите ее перед вашей системой аутентификации, как показано ниже:

` AUTHENTICATION_BACKENDS = [

'authenticate.backends.OTPBackend',
'django.contrib.auth.backends.ModelBackend'

] ` На примере Форекса вы можете использовать этот код

` class OTPBackend(BaseBackend):

def authenticate(self, request, username=None, password=None, **kwargs):
    otp = kwargs.get('otp')
    phone_number = kwargs.get('phone_number')

`

Вернуться на верх