Ldap Plone 4-获取经过身份验证的用户的类型

Ldap Plone 4-获取经过身份验证的用户的类型,ldap,plone,plone-4.x,Ldap,Plone,Plone 4.x,我有在网站上注册的用户和使用外部帐户登录的用户(使用plone.app.ldap) 如何获取登录用户的类型 membership = getToolByName(self.context, 'portal_membership') authenticated_user = membership.getAuthenticatedMember() (Pdb) authenticated_user <MemberData at /mywebsite/portal_memberdata/myus

我有在网站上注册的用户和使用外部帐户登录的用户(使用plone.app.ldap)

如何获取登录用户的类型

membership = getToolByName(self.context, 'portal_membership')
authenticated_user = membership.getAuthenticatedMember()

(Pdb) authenticated_user
<MemberData at /mywebsite/portal_memberdata/myuserid used for /mywebsite/acl_users>
membership=getToolByName(self.context,“门户\成员资格”)
authenticated\u user=membership.getAuthenticatedMember()
(Pdb)经过身份验证的用户
我有一个登录的用户,但不知道如何找到它是如何注册的。 (似乎
membership\u tool.listMembers()
给了我注册用户列表。也许我可以使用这个…)


我的目标是将帐户类型作为自定义事件中的自定义维度发送到Google Analytics,并创建一些漂亮的报告(帐户类型将是结果的过滤器)。

PAS服务的目标正是您的问题:-)

它被称为可插拔身份验证服务。这意味着您可以注册多个服务,PAS为您提供一个入口点来执行操作和查询。 这意味着您通常不必关心该用户是plone用户还是ldap用户

AFAIK唯一可能的方法是直接询问ldap插件:

ldap:您的AD/ldap插件的id

plone:你的plone站点

>>> membership = getToolByName(plone, 'portal_membership')
>>> authenticated_user = membership.getAuthenticatedMember()

>>> plone.acl_users.ldap.acl_users.searchUsers
<bound method LDAPUserFolder.searchUsers of <LDAPUserFolder at /fd/acl_users/ldap/acl_users>>

>>> search(uid=authenticated_user.getId())
[{'dn': 'cn=Test USER,ou=Users, ...', 'uid': 'test.user', 'sn': 'Test', 'mail': 't.user@email.com', 'givenName': 'USER', 'cn': 'Test User'}]
>>membership=getToolByName(plone,“门户\成员资格”)
>>>authenticated\u user=membership.getAuthenticatedMember()
>>>plone.acl\u users.ldap.acl\u users.searchUsers
>>>搜索(uid=authenticated\u user.getId())
[{'dn':'cn=测试用户,ou=用户,,'uid':'Test.USER','sn':'Test','mail':'t。user@email.com“,'givenName':'USER','cn':'Test USER'}]

搜索结果取决于您的ad/ldap配置

太好了!谢谢。:)
search=plone.acl\u users.get(“ldap插件”).acl\u users.searchUsers
在我的例子中。Mathias的答案是正确的,但此插件返回的IIRC用户也在道具中提供了有关其来源的信息。不幸的是,这不是一个标准的行为。我没有意识到这一点。这显然是更好的解决方案,因为它不需要第二个可能的ldap请求。