0

我有带 LDAP 的 Plone 3,里面有很多组和用户。我想获取特定组的所有组成员。

groupe_id = "mygroup"
gtool = getToolByName(self, 'portal_groups')
group = gtool.getGroupById(groupe_id)
members = group.getAllGroupMembers()

这里的成员总是返回[],但实际上,我的组中确实有一些用户。

4

2 回答 2

0

我不了解 plone,但它基于 posix 结构,您可以轻松地做到这一点。

import ldap

con = ldap.initialize('ldap://127.0.0.1')
con.simple_bind_s('cn=myuser', 'oh_yeah')
groups = con.search_s('dc=rkf,dc=org',
                      ldap.SCOPE_SUBTREE,
                      'objectclass=posixgroup',
                      ['memberuid'])

for a in groups:
    print 'Group:', a[0]
    print 'Members:', a[-1].get('memberuid')
于 2013-05-15T06:13:28.647 回答
0

简短的回答可能是:你不能。

当您(或 Plone)向 ldap 询问用户列表时,ldap 可能会认为它找到了太多结果,而只是简单地返回一个空列表。出于这个原因,通常最好更改用户和组控制面板中的设置并打开“许多用户”,也可能打开“许多组”。例如,这确保不显示“显示所有用户”按钮。

collect _

(顺便说一下,这不会搜索特定组中的成员。)

它真的很难看,所以我希望有一个更好的答案,以便我可以更新这个工具。:-)

于 2012-11-16T14:35:55.167 回答