douhu2525 2012-05-15 11:33
浏览 24
已采纳

允许操作资源发挥作用

I want to allow resource to role using ACL in Zend framework

I have modules privileges and account.

privileges module has users and privilege controllers. each controller has index, view and edit actions.

How can I grant action aresource to role? The problem I face that I can grant access to whole module but I can't give access to specific action in controller..

    $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'));

and also I make another way

 $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'));

but it doesn't work, making both ways cause the same problem, which not granting any access to privilege module! and just allow account module..

  • 写回答

1条回答

  • dqst96444 2012-05-16 11:31
    关注

    I make it, I make concatenation between module and controller, I make like this

    moduleName-ControllerName .

    I pass role and the concatenated module and controller as resources and action is the privilege.

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

    and here how I add the resources

          $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'));
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误