Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Zend framework Zend ACL仅从子角色拒绝父角色';s资源_Zend Framework_Acl - Fatal编程技术网

Zend framework Zend ACL仅从子角色拒绝父角色';s资源

Zend framework Zend ACL仅从子角色拒绝父角色';s资源,zend-framework,acl,Zend Framework,Acl,我试图在Zend框架中实现ACL。我希望父角色可以访问除允许子角色访问的资源之外的所有资源。到目前为止,我有以下代码: $acl = new Zend_Acl(); $acl->addRole('visitor') ->addRole('subscriber', 'visitor') ->addRole('editor', 'subscriber') ->addRole('admin', 'editor') ->addRole('su

我试图在Zend框架中实现ACL。我希望父角色可以访问除允许子角色访问的资源之外的所有资源。到目前为止,我有以下代码:

$acl = new Zend_Acl();
$acl->addRole('visitor')
    ->addRole('subscriber', 'visitor')
    ->addRole('editor', 'subscriber')
    ->addRole('admin', 'editor')
    ->addRole('superadmin', 'admin')
    ->allow();

$acl->addResource('index')
    ->addResource('blog')
    ->addResource('users')
    ->addResource('admin');

acl->allow('subscriber', 'blog', 'index')
    ->allow('editor', 'blog', array('add', 'edit'))
    ->allow('admin', 'admin')
    ->allow('superadmin', 'users');
我希望“访问者”能够访问所有资源,但子角色订阅者、编辑、管理员、超级管理员允许访问的资源除外。所有其他角色和资源也是如此。“访问者”可以访问所有资源,但不能访问子角色所允许的资源。

“订阅者”不是“访问者”的父级,而是其子级。因此,订阅者将继承访问者的所有资源和特权。 你没有问任何问题,但你想要的似乎是Zend_Acl的预期行为

$acl = new Zend_Acl();
$acl->addRole('visitor')
->addRole('subscriber', 'visitor')
->addRole('editor', 'subscriber')
->addRole('admin', 'editor')
->addRole('superadmin', 'admin');

$acl->addResource('index')
->addResource('blog')
->addResource('users')
->addResource('admin');

$acl->allow('subscriber', 'blog', 'index')
->allow('editor', 'blog', array('add', 'edit'))
->allow('admin', 'admin')
->allow('superadmin', 'users');
添加
$acl->allow('visitor'、'index'、'index')
,visitor现在可以访问索引页,其子项也可以访问索引页。但是访问者没有访问资源博客和特权索引的权限,只有订户及其子用户可以访问此页面

你应该阅读,有很多好的例子。

“订阅者”不是“访问者”的父项,而是它的子项。因此,订阅者将继承访问者的所有资源和特权。 你没有问任何问题,但你想要的似乎是Zend_Acl的预期行为

$acl = new Zend_Acl();
$acl->addRole('visitor')
->addRole('subscriber', 'visitor')
->addRole('editor', 'subscriber')
->addRole('admin', 'editor')
->addRole('superadmin', 'admin');

$acl->addResource('index')
->addResource('blog')
->addResource('users')
->addResource('admin');

$acl->allow('subscriber', 'blog', 'index')
->allow('editor', 'blog', array('add', 'edit'))
->allow('admin', 'admin')
->allow('superadmin', 'users');
添加
$acl->allow('visitor'、'index'、'index')
,visitor现在可以访问索引页,其子项也可以访问索引页。但是访问者没有访问资源博客和特权索引的权限,只有订户及其子用户可以访问此页面


你应该阅读,有很多好的例子可用。

我也在与Zend_Acl合作,我想我明白你的意思了。“问题”是,默认情况下,Zend拒绝访问所有资源,而您没有指定某些用户有权访问所需资源

这意味着,当您创建ACL(角色、资源、权限)时,您必须告知您希望授予访问者访问其可以访问的每个资源的权限


我相信Zend的工作方式是为了安全,因为通过这种方式,您可以确保只有您授予访问权限的用户才有权与指定的资源进行交互。

我也在使用Zend_Acl,我想我明白了您的意思。“问题”是,默认情况下,Zend拒绝访问所有资源,而您没有指定某些用户有权访问所需资源

这意味着,当您创建ACL(角色、资源、权限)时,您必须告知您希望授予访问者访问其可以访问的每个资源的权限


我相信Zend这样做是为了安全,因为这样你可以确保只有你授权访问的用户才有权与指定的资源进行交互。

但是使用此代码的访问者将被拒绝从博客的查看操作
$acl->isAllowed('visitor'、'blog'、'view')或任何其他资源。正确。所以基本上,你想让你的访客成为超级管理员,你的超级管理员成为访客?如果没有,您希望为访问者提供哪些资源?但是使用此代码的访问者将被拒绝从博客的查看操作
$acl->isAllowed('visitor'、'blog'、'view')访问或任何其他资源。正确。所以基本上,你想让你的访客成为超级管理员,你的超级管理员成为访客?如果没有,您希望为访问者提供哪些资源?