Не удалось выполнить вход во встроенную систему Django из react

django

@method_decorator(csrf_exempt, name='dispatch')
class UserLoginView(GenericAPIView):
    permission_classes = (AllowAny,)
    serializer_class = UserLoginSerializer

    def post(self, request):
        serializer = self.serializer_class(data=request.data)
        user = serializer.validate(request.data)

        if user is None:
            return Response(status=status.HTTP_400_BAD_REQUEST)
        else:
            user.before_last_login = user.last_login
            login(request, user)
            user.save()
            user = UserSerializer(user)
            return Response(data={'id': user.data['id'], 'img': user.data['image']}
                            , status=status.HTTP_200_OK)

реагировать

const res = await axios.post(`${APIURL}/account/login/`, {
  id: id,
  password: pwd,
});

когда я пытаюсь войти в систему из react, я получаю ответ suceessful response( Response(data={'id': user.data['id'], 'img': user.data['image']}, status=status.HTTP_200_OK) ), но не получается, все еще пользователь является annonymousUser в django. Как я могу исправить эту ошибку?

Предполагаю, что ваш фронтенд React размещен на другом сервере. Метод login() просто добавляет идентификатор сессии пользователя в хранилище браузера, а затем использует промежуточное ПО для присоединения этого идентификатора сессии к запросам.

Если ваш фронтенд React размещен на другом сервере, он не будет знать об этом куки сессии, и они не будут добавлены к вашим запросам axios(). Вместо этого вам нужно добавить токен пользователя (если вы используете аутентификацию на основе токена) в ваш Response() и кэшировать его в браузере. Затем вы можете добавить этот токен в последующие вызовы axios(), что позволит идентифицировать пользователя для вашего бэкенда Django.

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