我在 django 中创建了两个组。我创建了 billing_users 和 billing_admins。我在 ldap 中也有两组用户,internalBilling-admin 和internalBilling-users。
我目前正在使用 django-python3-ldap 身份验证。但我必须登录 Django 并手动将用户设置为 is_staff 和 is_superuser 以允许用户登录到默认管理控制台。此外,我必须将它们分配给它们所属的组。
问题1: 有没有一种方法可以根据标志所属的 Django 组自动设置标志?
问题2: 有没有一种方法可以让 Active Directory 用户组设置 Django 组,使用 django-python3-ldap 将用户设置在正确的 Django 组中?
作者声明如下:
LDAP_AUTH_CLEAN_USER_DATA 和 LDAP_AUTH_SYNC_USER_RELATIONS 设置 你的 friend 在这里吗?查看此处的文档:
https://github.com/etianen/django-python3-ldap#available-settings
但我不明白 LDAP_AUTH_CLEAN_USER_DATA 和 LDAP_AUTH_SYNC_USER_RELATIONS 是如何工作的,因为没有实现它的示例。
最佳答案
作者确认这是正确的做法https://github.com/etianen/django-python3-ldap/issues/74#issuecomment-304396431
def sync_all_user_group_relations(user, data):
ldap_groups = list(data.get('memberOf', ()))
for group in ldap_groups:
if group == 'CN=InternalBilling-Users,OU=ABC-Users,OU=Groups,DC=abc,DC=abc,DC=com':
g = Group.objects.get(name='Billing clerks')
user.is_staff=True
user.save()
g.user_set.add(user)
elif group == 'CN=InternalBilling-Admin,OU=ABC-Users,OU=Groups,DC=abc,DC=abc,DC=com':
g = Group.objects.get(name='Billing admins')
user.is_staff=True
user.save()
g.user_set.add(user)
关于python - 如何使用 django-python3-ldap 从 Active Directory 组在 Django 模型中创建组和权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44194897/