Django RemoteUserBackend不清理用户名

时间:2017-04-10 13:52:57

标签: python django authentication

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>格式。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

我认为你需要像

那样
class MyRemoteUserBackend(RemoteUserBackend):
    def clean_username(self, username):
        return username.split('\\')[1]

然后

AUTHENTICATION_BACKENDS = [
    'path.to.MyRemoteUserBackend',
    'django.contrib.auth.backends.ModelBackend',
]