Zend framework 需要建议设置Zend_Acl吗

Zend framework 需要建议设置Zend_Acl吗,zend-framework,acl,zend-acl,Zend Framework,Acl,Zend Acl,假设我有这些类/模型 项目(有许多列表) 列表 我希望只允许作为项目合作者的用户能够添加列表。我该怎么做呢。我知道我应该使用Zend\u Acl\u Assert,但是我应该传递什么作为资源呢。对于编辑/删除,我将传递列表本身。对于add,它似乎更像是一个项目。如果我将ListsController#addAction()移动到ProjectsController#addListAction(),哪个更正确?这是一种可能性 但是,如果我想执行类似于ListsController#addAct

假设我有这些类/模型

  • 项目(有许多列表)
  • 列表
我希望只允许作为项目合作者的用户能够添加列表。我该怎么做呢。我知道我应该使用
Zend\u Acl\u Assert
,但是我应该传递什么作为资源呢。对于编辑/删除,我将传递列表本身。对于add,它似乎更像是一个项目。如果我将
ListsController#addAction()
移动到
ProjectsController#addListAction()
,哪个更正确?这是一种可能性

但是,如果我想执行类似于
ListsController#addAction()
的操作,如何设置acl

$acl->allow('user', 'list', 'add', new assertClass());
将“列表”作为资源传递。我可以通过某种方式传递项目对象吗?这似乎没有什么意义

我可以通过某种方式传递项目对象吗


只要对象实现了
Zend\u Acl\u Resource\u接口
,并且已经在Acl中注册,您就可以使用任何您想要的东西。

为什么要传递列表进行编辑和删除,似乎没有必要?在不通过列表的情况下这样做会很好


如果你需要额外的检查,我所做的就是在我的模型上添加一个任务检查,它会检查ACL以及其他内容,以确定它是否正常。

我传递列表是为了检查用户是否是项目/列表的所有者,以便能够编辑/删除您的意思是我可以将实现
Zend_ACL_Resource_Interface
的任何对象传递到
Zend_ACL_Assert_Interface#Assert()
?但是像
$acl->allow('user',list',add',new assertClass())
我怎么能做到呢?呃,你知道,通常我认为我们应该在底层
断言接口上使用
Zend\u acl
?@jiewmeng这是正确的。assert接口对象将接收传递给
isAllowed()
的资源,然后如何定义acl,以便在用户请求添加列表时,将项目传递给acl/assert。像
$acl->isAllowed($user1,$project1,'add')
这样的东西,如果我想添加一个列表的话,是不是会违反直觉?