我想限制Plone站点根目录中只有登录成员的视图.
我应该检查哪个权限?
为了澄清,我想将此权限用作Zope 3视图配置,并且默认情况下有一些功能.如果我可以避免这种情况,我不想自己创建并为Authenticated分配权限.
没有"经过身份验证"的权限,所有权限仅用于特定操作,如果经过身份验证的用户需要能够执行该操作,则应为"已验证"角色分配相应的权限.
要获取"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级别定义的权限时,才需要使用后者,例如"站点管理员"或"编辑者".
| 归档时间: |
|
| 查看次数: |
676 次 |
| 最近记录: |