2012-06-05 56 views
4

我想仅限于登录成员的Plone站点根目录中的视图。查看检查登录成员的权限

我应该检查哪项权限?

为了澄清我想使用这个权限作为Zope 3的视图配置,并有一些默认的工作。如果我可以避免这种情况,我不想创建并分配权限以进行身份​​验证。

+0

你不想创建一个权限? – toutpt

回答

4

在股票Plone认证但不是匿名用户可能会更改自己的密码。您可以使用该权限。它被称为:

cmf.SetOwnPassword

8

没有“认证”的权限,所有权限都为具体的行动仅如果通过身份验证的用户需要能够执行该操作,那么你应该分配相应的权限到'认证'角色。

要获得的(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权限的别名,使用有效的Zope2同行python ids。

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

后者其实很简单。

说我想创建一个“访问foo的酒吧”允许,我会简单地用一个ZCML文件中的Zope3标识符直接进行注册:

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

这是所有有给它;现在ZMI中将显示“访问foo栏”权限。

如果你想给这个权限在默认情况下特定的角色,列出它们所包含的元素:

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

这只适用于“全球性”的角色(在Zope的根定义),如“经理','匿名'和'认证'。

(可选)使用角色映射将其列在GenericSetup配置文件中。xml文件到这个新的权限分配给经过身份验证的作用:

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

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