Django RemoteUserBackend

时间:2014-02-11 20:23:09

标签: django custom-authentication remoteusermiddleware

我正在尝试在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',它就可以工作,但我不能使用标准登录。

我错过了什么?

1 个答案:

答案 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',
)