我想限制Plone站点根目录中的视图,仅限登录成员。
我应该检查哪个权限?
为了澄清我想使用此权限作为Zope 3视图配置并且具有默认情况下有效的功能。如果可以避免这种情况,我不想自己创建并为Authenticated分配权限。
答案 0 :(得分:9)
没有“经过身份验证”的权限,所有权限仅适用于特定操作,如果经过身份验证的用户需要能够执行该操作,则应将相应的权限分配给“已通过身份验证”的角色。
要获取“已验证”角色的(基于Zope2字符串的)权限的快速列表,请使用以下ZMI视图:
http://localhost:8080/Plone/manage_roleForm?role_to_manage=Authenticated
我假设您在端口8080上运行您的站点并且您命名了Plone对象Plone
。它在多选列表中显示所有权限,其中当前已分配已激活的权限。
在默认网站上,此列表非常少,只分配了Set own password
,Set own properties
和Use external editor
。对于前两个,Zope3等价物是defined in Products.CMFCore;它们是cmf.SetOwnPassword
和cmf.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