0

Zend フレームワークで ACL を使用してリソースにロールを許可したい

モジュールの権限とアカウントを持っています。

特権モジュールには、ユーザーと特権コントローラーがあります。各コントローラーには、インデックス、ビュー、および編集アクションがあります。

アクションリソースをロールに付与するにはどうすればよいですか? モジュール全体へのアクセスを許可できるが、コントローラーの特定のアクションへのアクセスを許可できないという問題に直面しています。

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

    $this->add(new Zend_Acl_Resource('privileges'))
            ->add(new Zend_Acl_Resource('privileges-privilege'))
            ->add(new Zend_Acl_Resource('privileges-users'))
            ->add(new Zend_Acl_Resource('account'))
            ->add(new Zend_Acl_Resource('default'));


    $this->deny('admin'); //deny every thing
    $this->allow('admin', 'account');
    $this->allow('admin', 'privileges-privilege' , array('index','view','edit'));

また、私は別の方法を作ります

 $this->add(new Zend_Acl_Resource('privileges'))
      ->add(new Zend_Acl_Resource('privilege'), 'privileges')
       ->add(new Zend_Acl_Resource('Privilege'),array('index','view','edit'))
      ->add(new Zend_Acl_Resource('users', 'privileges'))
      ->add(new Zend_Acl_Resource('account'))
      ->add(new Zend_Acl_Resource('account:account'), 'account')
      ->add(new Zend_Acl_Resource('default'));

     $this->deny('admin'); //deny every thing
    $this->allow('admin', 'account');
      $this->allow('admin', 'Privilege', array('index','view','edit'));

しかし、それは機能せず、両方の方法で同じ問題が発生し、特権モジュールへのアクセスが許可されません! アカウントモジュールを許可するだけです..

4

1 に答える 1

0

作って、モジュールとコントローラーを連結して、こんな感じで作って

モジュール名-コントローラ名 .

ロールと連結されたモジュールとコントローラーをリソースとして渡し、アクションは特権です。

     if (!$this->_acl->isAllowed($role, $request->getModuleName() . '-' . $request->getControllerName(), $request->getActionName())) {
                $request->setModuleName('account')
                ->setControllerName('account')
                ->setActionName('error');
                 return false;
    } 

ここでリソースを追加する方法

      $this->add(new Zend_Acl_Resource('privileges'))
            ->add(new Zend_Acl_Resource('privileges-privilege'))
            ->add(new Zend_Acl_Resource('privileges-users'))
            ->add(new Zend_Acl_Resource('privileges-index'))
            ->add(new Zend_Acl_Resource('account'))
              ->add(new Zend_Acl_Resource('account-account'))
            ->add(new Zend_Acl_Resource('default'))
            ->add(new Zend_Acl_Resource('error'))
            ->add(new Zend_Acl_Resource('default-index'));



    // $this->allow('admin'); //allow every thing
    $this->allow('admin', 'account-account');
    $this->allow('admin', 'default');
    $this->allow('admin', 'default-index');
    $this->allow('admin', 'privileges-users', array('index','add-User','get-Group-Users'));
    $this->allow('admin', 'privileges-index', 'index');
    $this->allow('admin', 'privileges-privilege', array('index', 'get-privileges', 'update-privileges','get-User-Privileges','get-Group-Privileges'));
于 2012-05-16T11:31:10.207 に答える