Django RemoteUserBackend Not Cleaning Username



从说明中,我已经成功激活了 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',
]

最新更新