1

我正在尝试在 Django 1.5 中使用多个身份验证后端。

我想RemoteUserBackend与自定义header和标准一起使用ModelBackend

似乎我可以使一项或另一项工作,但不能两者兼而有之。如果我尝试使用登录,ModelBackend则会收到此错误:

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

设置.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”,它可以工作,但我不能使用标准登录。

我错过了什么?

4

1 回答 1

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',
)
于 2015-10-01T18:41:05.937 回答