从说明中,我已经成功激活了 django 的远程用户身份验证(请参阅下面的相关代码片段 SETTINGS.py
(。 活动目录用于远程身份验证。
# 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>
格式(例如 "Domain1PersonA"
(。
为了尝试从 username
中删除domain
,在 django 文档之后,我更新了 RemoteUserBackend
类中的 clean_username()
方法:
def clean_username(self, username):
return username.split('\')[1]
但是,新创建的user
对象仍然错误地将username
设置为 <domain><username>
格式。
我错过了什么?
我认为你需要这样做
class MyRemoteUserBackend(RemoteUserBackend):
def clean_username(self, username):
return username.split('\')[1]
然后
AUTHENTICATION_BACKENDS = [
'path.to.MyRemoteUserBackend',
'django.contrib.auth.backends.ModelBackend',
]