Отсутствует заголовок "Authorization", как получить доступ к заголовку авторизации? Django

Мне нужно проверить авторизационный HTTP-заголовок каждого входящего запроса.

Сначала я внедрил Middleware. Теперь на сайте в devtools (когда я что-то публикую) я вижу авторизационный заголовок с токеном.

class MyMiddleware:

    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        user_id = request.POST.get('created_by', False)
        try:
            api_token = CustomUser.objects.get(user=user_id).api_token

        except CustomUser.DoesNotExist:
            api_token = ''
        response = self.get_response(request)
        response['Authorization'] = "Bearer " + api_token

        return response

и теперь я пытаюсь получить доступ к авторизационному заголовку HTTP каждого входящего запроса, чтобы проверить его, но нет никакого авторизационного заголовка

class EventApiView(mixins.ListModelMixin, viewsets.GenericViewSet):
    queryset = Event.objects.all()
    serializer_class = EventSerializer
    @action(methods=['POST'], detail=False)
    def post(self, request):
        print(request.META['HTTP_AUTHORIZATION']) **#keyerror**
        print(request.META['Authorization']) **#keyerror**
        print(request.headers.items()) **#no authorization header**
        tutorial_serializer = EventSerializer(data=request.data)
        if tutorial_serializer.is_valid():
            tutorial_serializer.save()
            return Response(tut`enter code here`orial_serializer.data, status=status.HTTP_201_CREATED)
        return Response(tutorial_serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Вы присваиваете заголовок неправильной сущности. Вместо того, чтобы добавлять заголовок в ответ (то, что Django вернет клиенту), вам нужно добавить его в заголовки запроса:

from django.utils.deprecation import MiddlewareMixin


class CustomHeaderMiddleware(MiddlewareMixin):

    def process_request(self, request):
        user_id = request.POST.get('created_by', False)
        try:
            api_token = CustomUser.objects.get(user=user_id).api_token
        except CustomUser.DoesNotExist:
            api_token = ''
        request.META['HTTP_Authorization'] = "Bearer " + api_token
        response = self.get_response(request)
        return response
Вернуться на верх