2012-06-05 102 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的級別定義的權限,如「站點管理員」或「編輯器」 。