2013-10-21 29 views
0

您好我有一個基於Zend_Acl/Role的訪問控制的Web項目設置。菜單Pro Zend框架技術的訪問控制?

我有一個菜單表設置如下: ID | INT(11) name | VARCHAR(50) access_level | VARCHAR(50)

當前,所有菜單的訪問級別字段均設置爲空。

在佈局:

$this->layout()->adminMenu = $this->action('render', 'menu', null, array('menu' => $this->adminMenuId)); 

渲染菜單控制器的動作:

public function renderAction() 
    { 
     $menu = $this->_request->getParam('menu'); 
     $mdlMenuItems = new Model_Menuitem(); 
     $menuItems = $mdlMenuItems->getItemByMenu($menu); 

     if (count($menuItems) > 0) 
     { 
      foreach ($menuItems as $item) 
      { 
       $label = $item->label; 
       if(!empty($item->link)) 
       { 
        $uri = $item->link; 
       } 
       else 
       { 
        $uri = '/page/' . $item->page_id; 
       } 
      $itemArray[] = array( 'label' => $label, 
            'uri' => $uri); 
      } 
      $container = new Zend_Navigation($itemArray); 
      $this->view->navigation()->setContainer($container); 
     } 
    } 

的ACL的詳細介紹:

  $acl->addRole(new Zend_Acl_Role('guest')); 
     $acl->addRole(new Zend_Acl_Role('readonly'), 'guest'); 
     $acl->addRole(new Zend_Acl_Role('administrator'), 'readonly'); 

//設置訪問規則 $ ACL的> allow(null,array('index','error'));

//guest can only read content and login 
     $acl->allow('guest', 'page', array('index', 'error')); 
     $acl->allow('guest', 'user', array('login')); 
     $acl->deny('guest', 'menu', array('render')); 
     $acl->allow('administrator', null); 

我應該採取哪些措施來確保菜單不會呈現給客人?

回答

-1

您可以通過以下

$auth = Zend_Auth::getInstance(); 
    $identity = $auth->getIdentity(); 
+0

爲什麼下投票訪問授權的用戶的身份? – Mina