0

我有一个 Django 应用程序,它有两个身份验证后端,一个具有所有“内部”用户的 LDAP 后端和一个具有“外部”用户的自定义后端。所有与 LDAP 组搜索过滤器匹配的内部用户都应使用is_staff:创建True

之前,我们使用

AUTH_LDAP_USER_ATTR_MAP = {
    "name": "cn",
    "email": "mail",
    "is_staff": "mail",
}

这似乎工作得很好,但是使用 Django 1.10 我们现在得到:

django.core.exceptions.ValidationError: ["'me@example.com' value must be either True or False."]

我知道我可以搜索组成员并将其匹配,is_staff但基本上我希望针对 LDAP 进行身份验证的用户的所有is_staff帐户自动设置为:True

有没有合适的方法来做到这一点?我知道我可以在事后通过挂钩django_auth_ldap.backend.populate_user信号来修复它,但是用户已经创建,最好我想在创建用户之前对其进行修改。

4

1 回答 1

0

正确的实现可能是AUTH_LDAP_USER_FLAGS_BY_GROUP设置,如此处所述:http: //pythonhosted.org/django-auth-ldap/users.html#easy-attributes

具体来说,如果您可以识别所有用户所属的组,您可以拥有如下内容:

AUTH_LDAP_USER_FLAGS_BY_GROUP = {
    "is_staff": "cn=users,ou=groups,dc=example,dc=com"
}
于 2017-05-31T17:23:13.373 回答