Установить Django REST Frmework JWT в печенье


Я использую djangorestframework-jwt для аутентификации пользователей. Я переопределил встроенный JSONWebTokenAPIView, Чтобы также возвращать сведения о пользователе в ответе. И я также устанавливаю маркер в печенье, на мой взгляд.

def post(self, request, *args, **kwargs):
    serializer = self.get_serializer(data=request.data)

    if serializer.is_valid():
        user = serializer.object.get('user') or request.user
        token = serializer.object.get('token')
        response_data = {
            'access_token': token,
            'user': UserInfoSerializer(user).data
        }
        response = Response(response_data, status=status.HTTP_200_OK)
        if api_settings.JWT_AUTH_COOKIE:
            expiration = (datetime.utcnow() + api_settings.JWT_EXPIRATION_DELTA)
            response.set_cookie(api_settings.JWT_AUTH_COOKIE,
                                response.data['access_token'],
                                expires=expiration,
                                httponly=True)
        return response

    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Он отлично работает на сервере Django. Я могу видеть маркер в файлах cookie, когда я проверяю api с помощью REST browseable api view. Но мое приложение frontend (React) работает на localhost: 3000, и когда я нажимаю этот api с моего сервера frontend, я получаю ответ success, но маркер не устанавливается в печенье.

Нужно ли мне также установить домен cookie?

1 2

1 ответ:

Мне нужно было установить withCredentials: true на frontend и backend.

Нашел ответ благодаря этому сообщению Django cookies не сохраняются в браузере