我正在尝试在Django 1.5中使用多个身份验证后端。
我想将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"
我不确定我错过了什么。如果我设置'CUSTOM_USERID',它就可以工作,但我不能使用标准登录。
我错过了什么?
答案 0 :(得分: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',
)