首页 > 解决方案 > 如何在 ldap 参数后分配组?

问题描述

我想在特定的 ldap 参数之后分配给组。在 Django 中,我在 ldap 中有其他组。

我在signals.py中做了一些事情,但我想在settings.py中做同样的效果,因为当我创建一个新组时,我想在settings.py中改变一些东西

我在signals.py ant中这样做,它可以工作

global group_name

if (gidNumber =='201'):
    goup_name = 'a '
elif (gidNumber == '202'):
      user.is_staff = True
      group_name = 'b'
else:
      group_name = 'c'

if(user.groups.filter(name=group_name).exists()!= True ):
      group = Group.objects.get(name=group_name)
      user.groups.add(gruop)

但我会像这样在我的settings.py中尝试这样做

 AUTH_LDAP_USER_FLAGS_BY_GROUP = {
"groups.filter(name='a')": 
"gidNumber=201,uid=%(user)s,ou=People,dc=yy,dc=xx ",
        }

标签: pythondjangoldap

解决方案


最简单的答案是在 settings.py 中做自己的字典

LDAP_DICTIONARY = {
    '201':'a',
    '202':'b',
    '203':'c'
    }

AUTH_LDAP_USER_ATTR_MAP = {
    'first_name' : 'gecos',
    'last_name' : 'gidNumber',
     }

并在 signals.py 分配属性中,但我只有 first_name 和 last_name 参数,所以我将 gidNumber 分配给 last_name 并清理这个参数

gidNumber = user.last_name    
user.last_name=' '
group_name =LDAP_DICTIONARY[gidNumber]
group = Group.objects.get(name=group_name)
user.groups.add(group)

推荐阅读