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

时间:2017-02-23 13:13:51

标签: 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/myuserid used for /mywebsite/acl_users>

我有登录用户,但不知道如何找到它的注册方式。 (似乎membership_tool.listMembers()给了我注册用户列表。也许我可以使用这个......)

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

1 个答案:

答案 0 :(得分:3)

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'}]

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