我有一个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信号来修复它,但是用户已经创建了,最好是在创建用户之前修改它们。
发布于 2017-05-31 17:23:13
正确的实现可能是使用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"
}https://stackoverflow.com/questions/43980247
复制相似问题