Невозможно получить куки access и refresh в куках http only

Я создаю веб-приложение Django jwt authentication и пытаюсь получить токены доступа и обновления через HTTP-only cookies. Но фронт-энд может получить только токен обновления, а не токен доступа, поэтому я не могу войти в систему.

Фронтенд выполнен на React, и я использовал {withCredentials: true}, однако я получаю только токен обновления, а не токен доступа

Файл Authentication.py

import jwt, datetime
from django.contrib.auth import get_user_model
from django.utils import timezone
from django.conf import settings
from rest_framework import exceptions 
from rest_framework.authentication import BaseAuthentication, get_authorization_header

User = get_user_model()

secret_key = settings.SECRET_KEY

class JWTAuthentication(BaseAuthentication):
    def authenticate(self, request):
        auth = get_authorization_header(request).split()

        if auth and len(auth) == 2:
            token = auth[1].decode('utf-8')
            id = decode_access_token(token)
            
            user = User.objects.get(pk=id)
            return (user, None)
        raise exceptions.AuthenticationFailed('Unauthenticated')

def create_access_token(id):
    return jwt.encode({
        'user_id': id,
        'exp': timezone.now() + datetime.timedelta(seconds=60),
        'iat': timezone.now()
    }, 'access_secret', algorithm='HS256')


def decode_access_token(token):
    try:
        payload = jwt.decode(token, 'access_secret', algorithms='HS256')
        return payload['user_id']
    except:
        raise exceptions.AuthenticationFailed('Unauthenticated')


def create_refresh_token(id):
    return jwt.encode({
        'user_id': id,
        'exp': timezone.now() + datetime.timedelta(days=10),
        'iat': timezone.now()
    }, 'refresh_secret', algorithm='HS256')


def decode_refresh_token(token):
    try:
        payload = jwt.decode(token, 'refresh_secret', algorithms='HS256')
        return payload['user_id']
    except:
        raise exceptions.AuthenticationFailed('Unauthenticated')

файлviews.py

файл serialziers.py

from rest_framework import serializers
from django.contrib.auth import get_user_model
User = get_user_model()

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ["id", "email", "first_name", "last_name", "is_staff", "is_superuser", "team", "gender", "employment_type", "work_location", "profile_picture", "password"]
        extra_kawargs = {
            'password': {'write_only': True}
        }

    def create(self, validated_data):
        password = validated_data.pop('password', None)
        instance = self.Meta.model(**validated_data)
        if password is not None:
            instance.set_password(password)
        instance.save()
        return instance

При попытке войти в систему выдает:

GET http://127.0.0.1:8000/api/user/ 403 (Forbidden)

Похоже, что проблема кроется в UserAPIView или RefreshAPI

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