【问题标题】:Getting manager of manager of an employee using django-auth-ldap使用 django-auth-ldap 获取员工经理的经理
【发布时间】:2019-08-16 19:36:03
【问题描述】:

如果有人遇到我现在遇到的同样问题,我需要一些帮助,因为我被要求添加使用 Active Directory 登录的支持,我已经成功地完成了登录过程和用户​​的模型创建,并且现在我想将一些详细信息从 AD 填充到应用程序数据库中,我想获取一名员工的经理经理,因为我一直在搜索,我发现团队负责人 N+1 字段在广告上被命名为“经理”,所以我已使用此命令查询此问题

AUTH_LDAP_USER_ATTR_MAP = {
    "first_name": "givenName",
    "last_name": "Name",
    "email": "mail",
    "employee_manager": "manager",
    "employee_office": "physicalDeliveryOfficeName",
    "employee_cost_center": "extensionAttribute8" 
}

这里的问题是我在我的数据库中得到了这个

CN=TeamLeadName,OU=Users,OU=T,OU=C,OU=C,DC=domain,DC=net 

所以知道我不知道如何只获得团队负责人的姓名而不是其他人的姓名,以及从那里我如何获得团队负责人的团队,或者换句话说,最初的员工经理。 任何帮助将不胜感激。

【问题讨论】:

    标签: django python-3.x active-directory django-ldapdb


    【解决方案1】:

    manager 属性为您提供经理帐户的distinguishedName。您可以使用它来查找经理的帐户并获取名称(您可能想要displayName)。

    django-auth-ldap 软件包有 python-ldap 作为依赖项,因此您可以使用它来查找帐户。我不是 python 开发人员,所以我确定这需要工作,但是将 the documentationthis answer 放在一起,它应该看起来像这样:

    import ldap
    
    ...
    
    l = ldap.initialize('ldap://example.com')
    r = l.search_s(manager, ldap.SCOPE_BASE, '(objectClass=*)', ['displayName'])
    

    其中manager 是您刚刚找到的经理的distinguishedName,“example.com”是您的域名。

    【讨论】:

    • 我试过这个,当我打印 r 我得到这个 [('CN=Lead Name ,OU=Users,OU=Tunis,OU=Care,OU=Corporate,DC=domain,DC=net ', {'displayName': [b'Lead Name']})]
    • 因此您可以使用r[0][1]['displayName'][0] 从中提取displayName
    • 是的,我也找到了经理团队负责人的属性,我也可以查询它,谢谢你的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多