JWT с Django Rest Framework не работает в производстве

Мое приложение использует Django Rest Framework для API и JWT для аутентификации пользователей. Все работало нормально на моей локальной машине. У меня начались проблемы после развертывания на экземпляре EC2.

Единственное, что все еще работает - это вход, регистрация и обновление токенов. То есть, когда я пытаюсь войти, я получаю токены от бэкенда, которые успешно сохраняются в локальном хранилище; когда я пытаюсь зарегистрироваться, бэкенд создает нового пользователя; и время от времени токены также успешно обновляются

Но все остальные вызовы API не работают. Вначале, когда я делал вызов API, я получал ответ "401 Unauthorized".

Я полагаю, что причина была в том, что Apache не пересылал авторизационные заголовки. Поэтому я добавил "WSGIPassAuthorization On" в конфигурацию Apache.

Теперь вместо этого я получаю "500 Internal Server Error".

Как я уже сказал, работают только вызовы API для входа, обновления токенов и регистрации. Для входа и обновления токенов я использую стандартные "TokenObtainPairView" и "TokenRefreshView".

from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView

urlpatterns = [
    path('log-in/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('refresh-token/', TokenRefreshView.as_view(), name='token_refresh'),
]

Для регистрации я использую следующее представление:

class CreateUserAPI(CreateAPIView):
    serializer_class = UserSerializer
    permission_classes = [AllowAny]

    def post(self, request, *args, **kwargs):
        user_taken = User.objects.filter(username=request.data['username']).exists()
        if user_taken:
            return Response({'message': 'username already taken'}, status.HTTP_400_BAD_REQUEST)

        email_taken = User.objects.filter(email=request.data['email']).exists()
        if email_taken:
            return Response({'message': 'email already taken'}, status.HTTP_400_BAD_REQUEST)

        serializer = UserSerializer(data=request.data)
        if serializer.is_valid():
            user = serializer.save()
            if user:
                return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Это один из видов, который не работает:

class DeckApi(viewsets.ViewSet):
    permission_classes = [IsAuthenticated]

    def list(self, request, *args, **kwargs):
        queryset = Deck.objects.filter(user=request.user)
        serializer = DeckSerializer(queryset, many=True)
        return Response(serializer.data, status=status.HTTP_200_OK)

Кто-нибудь знает, в чем может быть проблема?

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