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

标签 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,并创建一些不错的报告(帐户类型将作为结果的过滤器)。

最佳答案

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

它被称为可插入授权服务。这意味着您可以注册多项服务,并且 PAS 为您提供了一个单一的入口点来执行操作和查询。 这意味着您通常不必关心用户是 plone 用户还是 ldap 用户。

据我所知,唯一可能的方法是直接询问 ldap 插件:

ldap: 你的AD/LDAP插件的id

plone:你的 plone 站点

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

>>> search = 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 配置。

关于ldap - Plone 4 - 获取经过身份验证的用户类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42416792/

相关文章:

c# - 以编程方式强制复制单个 Active Directory 对象

使用 mod_auth_tkt 的 Plone 和 CGI​​ 单点登录

plone - 为什么在 fill-slot 或 Define-macro 元素外部定义的变量在该元素内部不可见?

plone - 链接到 "File type"灵巧内容类型

plone - 在 Plone Site 设置中添加一个新的配置链接

perl - 从 1000 增加限制?

linux - OpenLDAP Centos 7 "no certificate"当客户端使用 'id ${USER}' 进行查询时

plone - 如何为灵巧内容类型的 zope.schema.list 设置默认值?

grails - 连接到 Active Directory 并搜索用户

python - 无法使用 buildout 安装 geopy 0.96.1