0

私のプロジェクトには、約5、6個のモジュールがあります

Ex: Web - Public access, URL - www.abc.com
Admin - admin can access - admin.abc.com (Non Acl)
CP - Specific group can access - cp.abc.com (Non Acl)
pbo - Another group can access - pbo.abc.com (Acl based and implemented recently)

上記のように、最近、ACL プラグインに基づいて、PBO と呼ばれるモジュールを追加しました。

各モジュールには特定の Bootstrap ファイルがあり、

しかし、新しいモジュールの実装後、他のすべてのモジュールは ACL プラグインを通過し、PBO モジュールのデフォルト ページにリダイレクトされます。

これが特権の設定方法です

$this->acl->allow('superAdmin', 'user', array('login','logout'));
$this->acl->allow('superAdmin', 'index', 'index');
$this->acl->allow('superAdmin', 'app', 'index');

$this->acl->allow('admin', 'user', array('index','login','logout','registered'));      
$this->acl->allow('admin', 'index', 'index');
$this->acl->allow('admin', 'app', array('index', 'do-feature', 'do-delete'));

ブートストラップ ファイルで ACL を初期化する

public function _initAcl()
{
    //Omit the process in CLI mode
    if (php_sapi_name() != 'cli') 
    {        
        $helper = new Nexva_Controller_Action_Helper_AclPbo();
        $helper->setRoles();
        $helper->setResources();
        $helper->setPrivilages();
        $helper->setAcl();

        //Register the ACL plugin - Then it will be called automatically,whenever an     acion is called
        $frontController = Zend_Controller_Front::getInstance(); 
        $frontController->registerPlugin(new Nexva_Plugin_AclPbo());

    }
}

他のモジュールで PBO モジュールの ACL を呼び出さないようにする方法はありますか?

4

2 に答える 2

1

プラグインを登録する前に、現在のモジュールがPBOであるかどうかを確認することができます。

if($frontController->getRequest()->getModuleName() == 'PBO')
$frontController->registerPlugin(new Nexva_Plugin_AclPbo());

于 2012-09-12T05:19:18.210 に答える
1

これは Zend Framework 1 の問題です。

すべてのモジュールのブートストラップは、特定のモジュールに対して常に呼び出されて実行されます。これが Zend Framework の設計方法です。

この問題のため、モジュールのブートストラップが ZF でどのように機能するか、およびその欠点を理解するのに役立つ非常に優れた記事が 1 つあります。Matthew Weier O'Phinney によって書かれました。

http://mwop.net/blog/234-Module-Bootstraps-in-Zend-Framework-Dos-and-Donts.html

そこから、このサイトには、モジュール固有のレイヤーのような「新しい」ブートストラップをセットアップする方法の解決策について説明するチュートリアルがあります。また、彼らが引用したいくつかの情報源へのリンクもあり、そのほとんどは読む価値があります (はい、かなりの量の読み物があります)。

http://offshootinc.com/blog/2011/02/11/modul-bootstrapping-in-zend-framework/

それが役立つことを願っています!

于 2012-08-08T14:31:55.487 に答える