Как включить базовый http auth через Django?

Как включить базовый http auth в Django?

Согласно Django docs, базовый http auth может быть включен непосредственно в Django, не требуя поддержки сервера.

Я добавил django.contrib.auth.middleware.RemoteUserMiddleware в свой MIDDLEWARE список и добавил django.contrib.auth.backends.RemoteUserBackend в свой AUTHENTICATION_BACKENDS список.

поэтому я создал простое представление:

import logging

from django.http.response import JsonResponse
from django.views.decorators.csrf import csrf_exempt


@csrf_exempt
def test_auth(request):
    print('Request.user: %s' % request.user)
    print('META:', request.META)
    print('REMOTE_USER:', request.META.get('REMOTE_USER'))
    if request.user.is_anonymous:
        return JsonResponse({"success": False}, safe=False)
    return JsonResponse({"success": True}, safe=False)

и зарегистрировал его в моем urls.py как /test_auth.

Затем для проверки я вызываю его с помощью curl:

curl -u "myuser:mysupersecretpassword" -0 -v -X GET http://127.0.0.1:8000/test_auth

Однако, он показывает, что Request.user: AnonymousUser, подразумевая, что RemoteUserBackend не вызывается. Я проверил свои учетные данные myuser:mysupersecretpassword и подтвердил, что могу войти под этим пользователем через обычный логин администратора Django.

Я использую Django 3.2.

Почему базовый аутентификатор не работает с RemoteUserBackend? Есть ли еще один шаг, который я упускаю?

Я тестирую, используя devserver. Не проходит ли это через заголовок REMOTE_USER, установленный curl? Если да, то как мне это обойти?

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