Не удалось выполнить вход во встроенную систему 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.