1

ZendのAclでは、リソースをコントローラーでのみ作成できます

ただし、コントローラーは、デフォルトのモジュールだけでなく、任意のモジュール上にある可能性があります。それで、私はインターネットからいくつかの記事を読みました、私はそれを見つけてこれを試しました:

$acl -> addResource(new Zend_Acl_Resource("admin"));
$acl -> addResource(new Zend_Acl_Resource("admin:page"), "admin");
$acl -> addResource(new Zend_Acl_Resource("admin:posts"), "admin");

しかし、それでも、それぞれのページを参照すると、リソースpageが見つからない、または見つからないというエラーが発生しpostsます。

モジュール固有のACLリソースを設定する方法は?

アップデート:

$acl -> addrole(new Zend_Acl_Role('guest'))
    -> addrole(new Zend_Acl_ROle('admin'), 'admin');

$acl -> addResource(new Zend_Acl_Resource("page")); //controller with same name in admin module exists

$acl -> addResource(new Zend_Acl_Resource("admin"));
$acl -> addResource(new Zend_Acl_Resource("admin:page"), "admin");
$acl -> addResource(new Zend_Acl_Resource("admin:posts"), "admin");

$acl -> deny(null, null);
$acl -> allow('user', 'page', 'view');
$acl -> allow('admin', null);
4

1 に答える 1

1

あなたが投稿したコードは、有効ではなかったので、ある種の擬似コードだったと思います。それでも、この答えはそのままで完全に機能するはずです。

$acl->addrole(new Zend_Acl_Role('guest'))
    ->addrole(new Zend_Acl_Role('admin'), 'guest');

$acl->addResource(new Zend_Acl_Resource("page"));
$acl->addResource(new Zend_Acl_Resource("admin"));
$acl->addResource(new Zend_Acl_Resource("admin:page"), "admin");
$acl->addResource(new Zend_Acl_Resource("admin:posts"), "admin");

$acl->deny();
$acl->allow('guest', 'page', 'view');
$acl->allow('admin');

// Lets run some quick tests...
var_dump($acl->isAllowed('guest', 'page', 'view')); // true
var_dump($acl->isAllowed('guest', 'page', 'edit')); // false
var_dump($acl->isAllowed('guest', 'admin:page', 'view')); // false

var_dump($acl->isAllowed('admin', 'page', 'view')); // true
var_dump($acl->isAllowed('admin', 'page', 'edit')); // false
var_dump($acl->isAllowed('admin', 'admin:page', 'view')); // true
于 2011-08-21T16:34:07.600 に答える