4

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

我应该检查哪个权限?

为了澄清起见,我想将此权限用作 Zope 3 视图配置,并拥有默认工作的东西。如果可以避免这种情况,我不想自己创建和分配权限。

4

2 回答 2

9

没有“经过身份验证”的权限,所有权限都仅针对特定操作,如果经过身份验证的用户需要能够执行该操作,那么您应该将相应的权限分配给“经过身份验证”的角色。

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

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

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

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

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

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

我真的不知道你想对你的视图做什么,但你最好的选择是找到一个适当的权限并将其分配给“已验证”角色,或者创建一个新权限。

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

假设我想创建一个“访问 foo bar”权限,我只需在 ZCML 文件中使用 Zope3 标识符直接注册它:

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

这里的所有都是它的; “Access foo bar”权限现在将在 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 级别定义的权限时才需要使用后者,例如“站点管理员”或“编辑器”。

于 2012-06-05T14:26:07.407 回答
4

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

cmf.SetOwnPassword

于 2012-06-05T14:03:09.203 回答