2011-07-15 103 views
2

我正在使用zend框架,在我的網站中我有兩種類型的用戶guest和loggeduser,我有一個控制器叫。書,在那裏我有3個動作。添加,編輯和刪除,是否有可能在zend acl中設置權限級別爲操作級別inste控制器級別

在我的zend acl我給書籍控制器的權限只有登錄用戶,在我的導航,書籍鏈接不顯示給客人,而不是我想顯示所有3個子鏈接登錄的用戶,並且只有這樣

添加子鏈接到客戶

到loged用戶

    • 添加

    • 編輯

    • 刪除

和來賓

    • 添加

的問題是,當我設置的ACL權限,圖書鏈接是完全沒有流露出來的客人,

我的ACL,這部分

$this->addResource(new Zend_Acl_Resource('books')); 
    $this->addResource(new Zend_Acl_Resource('login')); 
    $this->addResource(new Zend_Acl_Resource('logout'));   

    $this->addRole(new Zend_Acl_Role('guest')); 
    $this->addRole(new Zend_Acl_Role('user'), 'guest'); 

    $this->allow('guest', 'login'); 
$this->allow('user','logout'); 
    $this->allow('user','books'); 

$this->deny('guest', 'logout'); 
$this->deny('user', 'login'); 

有沒有什麼辦法來設置權限的行動水平,或者我需要一個插件。 我試圖很難找到一個小時的解決方案,但不能。 請幫助...............感謝:(

UPDATE。

不要被名字confuced,這是不是默認的Zend Acl.php。這是自定義一個留在我的模型文件夾,我的navigation.xml

<configdata> 
    <nav> 
     <books> 
      <label>Books</label> 
      <controller>books</controller> 
      <action>index</action> 
      <resource>books</resource> 
      <pages> 
        <add> 
         <label>Add</label> 
         <controller>books</controller> 
         <action>add</action> 
        </add> 
        <edit> 
         <label>Edit</label> 
         <controller>books</controller> 
         <action>edit</action> 
        </edit> 
        <delete> 
         <label>Delete</label> 
         <controller>books</controller> 
         <action>delete</action> 
        </delete> 
      </pages> 
     </books> 
    </nav> 
</configdata> 

回答

3

如前所述已經,你將有權限添加到資源。 $this->allow('role','resource',array('privilege'));許多人使用controller作爲資源,action作爲特權。

我假設您使用Zend_Navigation結合Zend_Acl來顯示正確的導航以簽署用戶。 books和它的pages未顯示的原因很簡單,因爲您沒有授予guest權限以查看父項books。您必須允許guest訪問爲books定義的相同資源和特權。所以,你將不得不做一些類似如下:

$this->allow('guest', 'books', array('index', 'add') 

然後,你可以給user訪問:現在

$this->allow('user', 'books', array('edit','delete')); // index & add are inherited 

,在你的Zend_Navigation_Page你必須設置資源爲books和特權index

+0

hmmmmm .................我會試試這謝謝你們兩個:) –

+0

我加了它就像那樣,但現在書鏈接完全不顯示,客人或登錄用戶 –

+0

您是否可以更新您的問題以及如何將書籍頁面添加到導航中?我懷疑你有'資源'=>'書籍'和缺少''特權'='索引'' –