Zend framework 是否可以将zend acl中的权限设置为操作级别而不是控制器级别
我使用的是zend框架,在我的站点中,我有两种类型的用户,guest和loggeduser,我有一个名为。书,在那里我有三个动作。添加、编辑和删除 在我的zend acl中,我只向登录用户授予books controller的权限,在我的导航中,books链接不显示给guest,而不是向登录用户显示所有3个子链接,并且只向guest添加子链接 像这样 发送给登录用户Zend framework 是否可以将zend acl中的权限设置为操作级别而不是控制器级别,zend-framework,zend-navigation,zend-acl,php,Zend Framework,Zend Navigation,Zend Acl,Php,我使用的是zend框架,在我的站点中,我有两种类型的用户,guest和loggeduser,我有一个名为。书,在那里我有三个动作。添加、编辑和删除 在我的zend acl中,我只向登录用户授予books controller的权限,在我的导航中,books链接不显示给guest,而不是向登录用户显示所有3个子链接,并且只向guest添加子链接 像这样 发送给登录用户 书 加 编辑 删除 客人呢 书 加 问题是当我在acl中设置权限时,books链接完全没有显示给guest 这是我
- 书
- 加
- 编辑
- 删除
- 书
- 加
$this->addResource(new Zend_Acl_Resource('books'));
$this->addResource(new Zend_Acl_Resource('login'));
$this->addResource(new Zend_Acl_Resource('logout'));
$this->addRole(new Zend_Acl_Role('guest'));
$this->addRole(new Zend_Acl_Role('user'), 'guest');
$this->allow('guest', 'login');
$this->allow('user','logout');
$this->allow('user','books');
$this->deny('guest', 'logout');
$this->deny('user', 'login');
有没有办法将权限设置为操作级别,或者我需要一个插件。
我费了好几个小时的劲想找到一个解决办法,但没有找到。
请帮忙。。。。。。。。。。。。。。。谢谢:(
更新
不要被名字弄糊涂了,这不是默认的zend Acl.php。这是一个自定义的,保存在我的models文件夹中
my navigation.xml的一部分
<configdata>
<nav>
<books>
<label>Books</label>
<controller>books</controller>
<action>index</action>
<resource>books</resource>
<pages>
<add>
<label>Add</label>
<controller>books</controller>
<action>add</action>
</add>
<edit>
<label>Edit</label>
<controller>books</controller>
<action>edit</action>
</edit>
<delete>
<label>Delete</label>
<controller>books</controller>
<action>delete</action>
</delete>
</pages>
</books>
</nav>
</configdata>
书
书
指数
书
添加
书
添加
编辑
书
编辑
删除
书
删除
其中,艺术家是资源(控制器),删除是操作
有关示例,请参见
和/或如前所述,您必须向资源添加权限。
$this->allow('role','resource',array('privilege');
许多人将控制器
用作资源,将操作
用作权限
我假设您正在使用Zend_Navigation
和Zend_Acl
来向已登录的用户显示正确的导航。books
及其页面
不显示的原因很简单,因为您没有授予guest
查看家长books
的权限。您必须允许guest
访问为书籍定义的相同资源和权限。因此,您必须执行以下操作:
$this->allow('guest', 'books', array('index', 'add')
然后,您可以给用户访问权限:
$this->allow('user', 'books', array('edit','delete')); // index & add are inherited
现在,在您的Zend_Navigation\u页面中
您必须将资源设置为books
,并将权限设置为索引
,我就是这样添加的,但是现在books链接完全没有显示给任何一个用户、来宾或登录用户。您可以更新您的问题,说明如何将books页面添加到导航中吗?我怀疑你有'resource'=>'books'
并且缺少'privilege'='index'
我添加了我的navigation.xml的一部分。请检查books
下的itAddindex
,这应该会做些小动作。现在可以了,但我必须在每个动作下添加资源和特权。谢谢:D
$this->allow('user', 'books', array('edit','delete')); // index & add are inherited