Django версии 1.3 включает в себя RemoteUserMiddleware
и
RemoteUserBackend
классы, позволяющие Apache выполнять аутентификацию.
Смотри http://docs.djangoproject.com/en/dev/howto/auth-remote-user/
У меня есть initial_data.json, который создает суперпользователя при выполнении syncdb. Это подтверждают дампданные.
Но я обнаружил, что он, кажется, не входит в систему с недавно созданной базой данных. Я получаю исключение ImproperlyConfigured, которое говорит:
Промежуточное программное обеспечение для аутентификации удаленного пользователя Django требует установки промежуточного программного обеспечения для аутентификации.
Edit your MIDDLEWARE_CLASSES setting to insert django.contrib.auth.middleware.AuthenticationMiddleware' before the RemoteUserMiddleware class.
Трассировка указывает на RemoteMilddleware.process_request()
:
def process_request(self, request):
# AuthenticationMiddleware is required so that request.user exists.
if not hasattr(request, 'user'):
raise ImproperlyConfigured(...
Вывод DEBUG от Apache показывает, что в действительности настройки имеют AuthenticationMiddleware
и RemoteUserMiddleware
в запрошенном порядке:
MIDDLEWARE_CLASSES
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.RemoteUserMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')
Но атрибут request.user не установлен, генерируя исключение.
Если я посмотрю ближе на исходный код django.contrib.auth.backends и middleware,
Я считаю, что AuthenticationMiddleware
регистрируется LazyUser
для
класс запроса. Но RemoteUserBackend
, похоже, не имеет
вызванный метод authenticate (), в котором удаленный_пользователь ищется в таблице Users.
Есть ли что-то, что я должен сделать, чтобы заставить authenticate()
быть вызванным для создания request.user?
Я могу предоставить больше информации по мере необходимости. Кстати, это SSL. Есть ли какое-то взаимодействие, которого я не ожидал?
Следует отметить, что я использую Apache2.2.14 и mod_wsgi
.