2011-04-17 39 views
4

我想爲不同的模塊設置不同的訪問。爲不同的模塊設置不同的訪問

我嘗試了

$this->allow($role, $module, $controller, $action); 

$this->allow($role, $module . ':' . $controller, $action); 

但這似乎並沒有工作。

任何想法??

回答

3

要設置ACL正確,您需要定義角色資源權限

E.g.

$this->addRole(new Zend_Acl_Role('guests')); 

$this->add(new Zend_Acl_Resource('default')) 
    ->add(new Zend_Acl_REsource('default:index'), 'default'); 

$this->allow('guests', 'default:index', array('index', 'error')); 

這是一個基於模塊的結構。所以首先你定義一個角色。然後你定義默認的模塊資源。 Index是IndexController。最後,設置訪客類型的用戶應該能夠以數組身份訪問的操作。

您問題中的第二行代碼似乎沒問題,所以在其他地方可能會出現問題。檢查出一些資源:

文檔:Zend_Acl

如何:Zend Framework 1.8 tutorial 5 zend_acl with zend_auth and controller plugin

+0

感謝名單,但我有概率呢!在我的proj中有大約100個controll,通過你的方式,我必須添加所有這些代碼' - > add(new Zend_Acl_REsource('default:index'),'default');'因爲我正在檢查當前($ this - > _ acl-> isAllowed($ this - > _ currentRole,$ this - > _ module。':'。$ this - > _ controller,$ this - > _ action))**或者** if($ this - > _ acl-> isAllowed($ this - > _ currentRole,$ this - > _ controller,$ this - > _ action))**這太棒了! – afsane 2011-04-17 09:33:45

+0

是的,當你想控制權限時,你必須在我的答案中定義它。你可以在如何設置一個類似於描述的acl庫 – 2011-04-17 09:45:56

相關問題