查看检查登录成员的权限

Mik*_*maa 4 zope plone

我想限制Plone站点根目录中只有登录成员的视图.

我应该检查哪个权限?

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

Mar*_*ers 9

没有"经过身份验证"的权限,所有权限仅用于特定操作,如果经过身份验证的用户需要能够执行该操作,则应为"已验证"角色分配相应的权限.

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

http://localhost:8080/Plone/manage_roleForm?role_to_manage=Authenticated
Run Code Online (Sandbox Code Playgroud)

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

在默认站点上,此列表仅非常少Set own password,Set own properties并且Use external editor已分配.对于前两个,Zope3等价物在Products.CMFCore定义 ; 他们是cmf.SetOwnPassword,而且cmf.SetOwnProperties; 第三个目前没有Zope3等价物,但很容易定义,只需将其添加到某个地方的ZCML文件中:

<permission
  id="plone.UseExternalEditor"
  title="Use external editor"
  />
Run Code Online (Sandbox Code Playgroud)

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

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

实际上后者真的很容易.

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

<permission
    id="foobar.AccessFooBar"
    title="Access foo bar"
    />
Run Code Online (Sandbox Code Playgroud)

这里的所有都是它的; 现在,"访问foo栏"权限将在ZMI中可见.

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

<permission
    id="foobar.AccessFooBar"
    title="Access foo bar">
  <role name="Authenticated" />
</permission>
Run Code Online (Sandbox Code Playgroud)

这仅适用于"全局"角色(在Zope根目录中定义),例如"经理","匿名"和"已验证".

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

<?xml version="1.0"?>
<rolemap>
  <permissions>
    <permission name="Access foo bar" acquire="False">
      <role name="Authenticated"/>
    </permission>
  </permissions>
</rolemap>
Run Code Online (Sandbox Code Playgroud)

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