查看检查登录成员的权限

时间:2012-06-05 12:37:31

标签: plone zope

我想限制Plone站点根目录中的视图,仅限登录成员。

我应该检查哪个权限?

为了澄清我想使用此权限作为Zope 3视图配置并且具有默认情况下有效的功能。如果可以避免这种情况,我不想自己创建并为Authenticated分配权限。

2 个答案:

答案 0 :(得分:9)

没有“经过身份验证”的权限,所有权限仅适用于特定操作,如果经过身份验证的用户需要能够执行该操作,则应将相应的权限分配给“已通过身份验证”的角色。

要获取“已验证”角色的(基于Zope2字符串的)权限的快速列表,请使用以下ZMI视图:

http://localhost:8080/Plone/manage_roleForm?role_to_manage=Authenticated

我假设您在端口8080上运行您的站点并且您命名了Plone对象Plone。它在多选列表中显示所有权限,其中当前已分配已激活的权限。

在默认网站上,此列表非常少,只分配了Set own passwordSet own propertiesUse external editor。对于前两个,Zope3等价物是defined in Products.CMFCore;它们是cmf.SetOwnPasswordcmf.SetOwnProperties;第三个目前没有Zope3等价物,但很容易定义,只需将其添加到某个地方的ZCML文件中:

<permission
  id="plone.UseExternalEditor"
  title="Use external editor"
  />

Zope3权限只是使用有效python id的Zope2对等项的别名。

我真的不知道你想对你的观点做些什么,但你最好的办法是要么找到适当的权限并将其分配给'认证'角色,要么创建一个新的权限。

实际上,后者真的很容易。

假设我想创建一个'Access foo bar'权限,我只需将其直接注册到ZCML文件中的Zope3标识符:

<permission
    id="foobar.AccessFooBar"
    title="Access foo bar"
    />

这就是它的全部;现在,“访问foo栏”权限将显示在ZMI中。

如果您希望默认情况下将此权限授予特定角色,请将它们列为包含的元素:

<permission
    id="foobar.AccessFooBar"
    title="Access foo bar">
  <role name="Authenticated" />
</permission>

这仅适用于“全局”角色(在Zope根目录中定义),例如“经理”,“匿名”和“经过身份验证”。

(可选)使用rolemap.xml文件将其列在GenericSetup配置文件中,以将此新权限分配给Authenticated角色:

<?xml version="1.0"?>
<rolemap>
  <permissions>
    <permission name="Access foo bar" acquire="False">
      <role name="Authenticated"/>
    </permission>
  </permissions>
</rolemap>

只有当您想要分配在Plone级别定义的权限时,才需要使用后者,例如“站点管理员”或“编辑者”。

答案 1 :(得分:4)

在库存Plone中,经过身份验证但不是匿名的用户可能会更改自己的密码。您可以使用该权限。它被称为:

cmf.SetOwnPassword