从instructions开始,我已成功激活django的远程用户身份验证(请参阅下面SETTINGS.py
中的相关代码段)。 Active Directory用于远程身份验证。
# snippet from SETTINGS.py
MIDDLEWARE_CLASSES = (
...
'django.contrib.auth.middleware.RemoteUserMiddleware',
...
)
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.RemoteUserBackend',
'django.contrib.auth.backends.ModelBackend',
]
正如所料,当用户第一次登录时,由于用户尚未存在,django将创建用户。但是,在创建用户时,用户的username
字段采用<domain>\<username>
格式(例如"Domain1\PersonA"
)。
尝试从domain
移除username
,在django docs之后,我更新了clean_username()
类中的RemoteUserBackend
方法:
def clean_username(self, username):
return username.split('\\')[1]
但是,新创建的user
个对象仍然错误地将username
设置为<domain>\<username>
格式。
我错过了什么?
答案 0 :(得分:1)
我认为你需要像
那样class MyRemoteUserBackend(RemoteUserBackend):
def clean_username(self, username):
return username.split('\\')[1]
然后
AUTHENTICATION_BACKENDS = [
'path.to.MyRemoteUserBackend',
'django.contrib.auth.backends.ModelBackend',
]