2014-02-11 5 views
0

Я пытаюсь использовать несколько бэкэндов аутентификации в Django 1.5.Django RemoteUserBackend

Я хочу использовать RemoteUserBackend с обычаем header и стандартной ModelBackend

Кажется, что я могу сделать одну или другую работу, но не оба. Если я пытаюсь войти в систему, используя ModelBackend я получаю эту ошибку:

"'CustomHeaderMiddleware' object has no attribute 'authenticate'" 

settings.py:

MIDDLEWARE_CLASSES = (
    ... 
    'myapp.backends.custom_auth.CustomHeaderMiddleware', 
    ... 
) 

AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend', 
    'django.contrib.auth.backends.RemoteUserBackend', 
    'myapp.backends.custom_auth.CustomHeaderMiddleware', 
) 

custom_auth.py:

from django.contrib.auth.middleware import RemoteUserMiddleware 

class CustomHeaderMiddleware(RemoteUserMiddleware): 
    header = "CUSTOM_USERID" 

Я не уверен, что я m отсутствует. Он работает, если я устанавливаю 'CUSTOM_USERID', но я не могу использовать стандартный логин.

Что мне не хватает?

+1

почему это промежуточное программное бэкендов аутентификации? – karthikr

+0

Спасибо @karthikr! Вот и все. –

ответ

0

Удалить 'myapp.backends.custom_auth.CustomHeaderMiddleware' от AUTHENTICATION_BACKENDS.

Кроме того, убедитесь 'django.contrib.auth.middleware.AuthenticationMiddleware', находится перед 'myapp.backends.custom_auth.CustomHeaderMiddleware' в MIDDLEWARE_CLASSES

Пример:

MIDDLEWARE_CLASSES = (
    ... 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'myapp.backends.custom_auth.CustomHeaderMiddleware', 
    ... 
) 

AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend', 
    'django.contrib.auth.backends.RemoteUserBackend', 
) 

 Смежные вопросы

  • Нет связанных вопросов^_^