0

こんにちは、Zend_Acl / Role ベースのアクセス制御を使用して Web プロジェクトをセットアップしています。

次のようにメニュー テーブルを設定しています。INT(11) 名 | VARCHAR(50) アクセスレベル | VARCHAR(50)

現在、アクセス レベル フィールドはすべてのメニューで null に設定されています。

レイアウト:

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

メニュー コントローラの Render アクション:

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

メニューがゲストに表示されないようにするには、どのような手順を実行すればよいですか?

4

1 に答える 1

-1

次の方法で、許可されたユーザーの ID にアクセスできます。

    $auth = Zend_Auth::getInstance();
    $identity = $auth->getIdentity();
于 2013-10-21T09:49:31.100 に答える