2012-01-31 8 views
3

私はAdminモジュールのIndexコントローラとIndexアクションと、ACLを使用しているDefaultモジュールのIndexコントローラとIndexアクションを区別しようとしているのです。Zend FrameworkのACLの役割とモジュール

デフォルトのモジュールのインデックスコントローラにはアクセスできますが、管理モジュールにはアクセスできないようにします。何を試しても、デフォルトのモジュールのインデックスにアクセスできるようにすると、管理モジュールのインデックスも利用できます。

ご意見をいただければ幸いです。

答えて

5

module-controllerとして、あなたのリソースを定義し、actionなどの特権が、あなたは、私がいることをしようとしてきたこの

... 

// Default module, index controller 
$this->addResource(new Zend_Acl_Resource('default-index')); 
// Admin module, index controller 
$this->addResource(new Zend_Acl_Resource('admin-index')); 

// Allow user to access default module, index controller, index and about actions 
$this->allow('user', 'default-index', array('index', 'about')); 
// Allow admin to access admin module, index controller, all actions 
$this->allow('admin', 'admin-index'); 

... 

[EDIT]のようなものそして、あなたのコントローラにプラグインをpreDispatch

... 

    $module = $request->getModuleName(); 
    $controller = $request->getControllerName(); 
    $action = $request->getActionName(); 
    $resource = "{$module}-{$controller}"; 
    if ($acl->has($resource)) { 
     if (!$acl->isAllowed($role, $resource, $action)) { 
     } 
    } 
    ... 
+0

を持つことができますありがとうございます...以下のコードは私に次のエラーを与えます... '\t \t $ acl-> add(新しいZend_Acl_Resource( 'admin-index')); \t \t $ acl-> add(新しいZend_Acl_Resource( 'default-index'))); \t \t $ acl-> deny(); \t \t \t \t $ acl-> allow( 'guest'、 'default-index'、array( 'index'))); ' ' 致命的なエラー:メッセージ「リソース 『インデックスが/Users/drewfulton/Dropbox/Websites/Parulidae/library/Zend/Acl.phpに』が見つかりません」とのキャッチされない例外「Zend_Acl_Exception」:365' –

+0

私はセクションを追加しましたACLのコントローラプラグインのここでは、ユーザーが許可されているかどうかを確認する前に、モジュール名とコントローラ名を使用してリソースを構築する必要があります。 – Optimus

+0

それはそうしました。あなたが提供した$リソース定義ではなく$ controllerを使用していたので、私が持っていた問題は2番目のif文にありました。すべての助けに感謝します。巨大なセーバー! –

関連する問題