Django reatApi Запрос пользователя является анонимным при использовании jwt-куки

Я создаю новое приложение django restApi в рамках моего приложения для пользователей Я использую jwt аутентификацию в настоящее время я могу зарегистрироваться, войти в систему, хранить куки и отправить запрос get после входа в систему с действительными учетными данными. Моя проблема в том, что когда я получаю аутентифицированный запрос get, я не могу увидеть пользователя запроса, он отображается как AnonymousUser. Прилагаю пост-запрос на вход и код запроса на получение от конечной точки restApi.

from django.shortcuts import render
from rest_framework.exceptions import AuthenticationFailed

# Create your views here.
from rest_framework.views import APIView

from .models import User
from .serializers import UserSerializer
from rest_framework.response import Response
import jwt,datetime
class RegisterView(APIView):
    def post(self, request):
        serializer = UserSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return Response(serializer.data)

class LoginView(APIView):
    def post(self, request):
        email = request.data['email']
        password = request.data['password']
        user = User.objects.filter(email=email).first()
        if user is None:
            raise AuthenticationFailed('User not found')
        if not user.check_password(password):
            raise AuthenticationFailed('Incorrect password')
        payload={'id':user.id,'exp':datetime.datetime.utcnow()+datetime.timedelta(minutes=60),
                 'iat':datetime.datetime.utcnow()}
        token = jwt.encode(payload, 'secret', algorithm='HS256')
        response = Response()
        response.set_cookie(key='jwt',value=token,httponly=True)
        response.data={'jwt':token}
        return response

class UserView(APIView):
    def get(self, request):
        token = request.COOKIES.get('jwt')
        if token is None:
            raise AuthenticationFailed('Unauthenticatedddd')
        try:
            payload=jwt.decode(token,'secret',algorithms=['HS256'])
        except jwt.ExpiredSignatureError:
            raise AuthenticationFailed('Unauthenticated')
        user = User.objects.filter(id=payload['id']).first()
        serializer = UserSerializer(user)
        return Response(serializer.data)

class UsserLogoutView(APIView):
    def post(self, request):
        response = Response()
        response.delete_cookie('jwt')
        response.data = {'message': 'You have been logged out'}
        return response



from django.shortcuts import render
from rest_framework.exceptions import AuthenticationFailed
from rest_framework.response import Response
from rest_framework.views import APIView
import jwt

from .models import Subject, Question
from .serializers import SubjectSerializer, YearsSerializer


# Create your views here.
class SubjectsView(APIView):
    def get(self, request):
        token = request.COOKIES.get('jwt')
        if token is None:
            raise AuthenticationFailed('Unauthenticated')
        try:
            jwt.decode(token,'secret',algorithms=['HS256'])
        except jwt.ExpiredSignatureError:
            raise AuthenticationFailed('Unauthenticated')
        subjects = Subject.objects.filter()
        serializer = SubjectSerializer(subjects, many=True)
        return Response(serializer.data)```



I was looking for a way to store a token with it's relevant user with no success
Вернуться на верх