我使用受this video tutorial启发的简单ACL。 acl.global.php
的结构类似于
return [
'acl' => [
'roles' => [
'guest' => null,
'member' => 'guest',
'admin' => 'member'
],
'resources' => [
'allow' => [
'Application\Controller\Index' => ['all' => 'member'],
'Application\Controller\Error' => ['all' => 'member'],
'Item\Controller\Process' => [
'index' => 'member',
'create' => 'member',
'showItem' => 'member', // website.tld/item/:id
'showList' => 'member' // website.tld/list-items
]
]
],
'redirect_route' => [
'params' => [],
'options' => ['name' => 'error403']
]
]
];
有一个Authorization\Acl\Acl
类,它扩展了Zend\Permissions\Acl\Acl
并添加了使用上面配置文件中的数据设置对象的功能。
第三个也是最后一个演员是Authorization\Module
类。在route
事件侦听器中添加了ACL处理,在此侦听器方法if (! $acl->isAllowed($role, $controller, $action))
中,用户获取了403
HTTP状态代码和相应视图。
现在我想要另外限制用户'访问项目(文章,订单,评论等)。如果用户是其所有者/作者,则用户应该只能看到item
(showItemAction
)的详细视图。如何将这种逻辑集成到ACL中?