我正在创建一个 Django 项目,它需要通过 SSL 进行 HTTP 基本身份验证。用户通过我公司的 LDAP 服务器进行身份验证。这是使用https://docs.djangoproject.com/en/1.3/howto/auth-remote-user/中描述的方法工作的。
我创建了一个子类,django.contrib.auth.backends.RemoteUserBackend
它定义了一个configure_user()
方法,该方法根据从 LDAP 中提取的信息填充各种用户字段。当用户使用 HTTP 基本身份验证登录时,这工作得很好。
我的项目还要求应用程序的用户能够在表单中输入用户名。提交表单后,我想做相当于User.objects.get_or_create(username=username)
并让我的自定义RemoteUserBackend.configure_user()
填充 LDAP 中所有缺失的字段。这不能按预期工作,而是获取现有用户(好)或创建仅设置用户名字段的用户(坏)。
如何获得所需的行为?我宁愿不必撕掉并用自定义模型替换 Django 的身份验证模型,但如果需要,可以这样做。目标 Django 版本是 1.3,但可以更改。