Сообщение CSRF token missing при выходе и повторном входе в аккаунт

Бэкенд - django В системе у меня есть модель юзера, определенная следующим образом:

class User(AbstractUser):
    username = models.CharField(max_length=100, unique=True)
    type = models.CharField(max_length=255, default='ANONYMUS')
    password = models.CharField(max_length=255)

    REQUIRED_FIELDS = []

И метод авторизации:

class LoginView(APIView):
    def post(self, request):
        email = request.data['email']
        password = request.data['password']
        user = authenticate(request, username=email, password=password)
        
        if user is not None:
            login(request, user)
            serializer = UserSerializer(User.objects.filter(id=user.id).first())

        else:
            raise AuthenticationFailed('Unauthenticated')
        
        return Response(serializer.data)

Который я теперь декорирую так:

@method_decorator(csrf_exempt, name="dispatch")

С мыслью, что это поможет мне избежать ошибки csrf токена А также метод выхода из аккаунта:

class LogoutView(APIView):
    def post(self, request):
        logout(request)

Как я понял, для аутентификации метод login "устанавливает" две куки: csrftoken и sessionid. Я вижу их в хранилище. Но стоит мне выполнить метод logout и попробовать авторизоваться снова, как я получаю ошибку:

> "CSRF Failed: CSRF token missing."

Я следовал примерам в документации django при написании этого кода и совершенно не понимаю, в чем может быть ошибка. В качестве фронтенда я использую svelte и получаю куку так с параметром csrftoken:

function getCookie(name) {
   const value = `; ${document.cookie}`;
   const parts = value.split(`; ${name}=`);
   if (parts.length === 2) return parts.pop().split(';').shift();
}

В общем - запутался совершенно! Подскажите, пожалуйста, в какую сторону копать. Видел решение "использовать redirect после авторизации), но этот функционал у меня лежит на фронтенде


Ответы (0 шт):