我有带 LDAP 的 Plone 3,里面有很多组和用户。我想获取特定组的所有组成员。
groupe_id = "mygroup"
gtool = getToolByName(self, 'portal_groups')
group = gtool.getGroupById(groupe_id)
members = group.getAllGroupMembers()
这里的成员总是返回[]
,但实际上,我的组中确实有一些用户。
我有带 LDAP 的 Plone 3,里面有很多组和用户。我想获取特定组的所有组成员。
groupe_id = "mygroup"
gtool = getToolByName(self, 'portal_groups')
group = gtool.getGroupById(groupe_id)
members = group.getAllGroupMembers()
这里的成员总是返回[]
,但实际上,我的组中确实有一些用户。
我不了解 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')
简短的回答可能是:你不能。
当您(或 Plone)向 ldap 询问用户列表时,ldap 可能会认为它找到了太多结果,而只是简单地返回一个空列表。出于这个原因,通常最好更改用户和组控制面板中的设置并打开“许多用户”,也可能打开“许多组”。例如,这确保不显示“显示所有用户”按钮。
在collect _
(顺便说一下,这不会搜索特定组中的成员。)
它真的很难看,所以我希望有一个更好的答案,以便我可以更新这个工具。:-)