我正在创建一个 zend 框架 2 应用程序,我正在尝试实现这里解释的内容:
http://ralphschindler.com/2009/08/13/dynamic-assertions-for-zend_acl-in-zf
代码工作的演示非常好,但它并不真正适用于框架(利用 mvc)的工作方式。或者也许我只是在错误的轨道上......
我已经创建了一个这样的 RouteListener :
class RouteListener implements ListenerAggregateInterface
{
public function attach(EventManagerInterface $events)
{
$this->listeners[] = $result = $events->attach(
MvcEvent::EVENT_DISPATCH, array($this, "checkAcl"), 100
);
}
}
方法 checkAcl 然后检查您是否被允许做您想做的事情。
资源和操作是这样确定的:
$resource = $routeMatch->getParam("controller");
$action = $routeMatch->getParam("action");
并且角色由存储在会话中的身份确定(实现 Zend\Permissions\Acl\Role\RoleInterface)
按照示例:我如何确定是否允许用户编辑某个博客文章?当 acl 进行检查时,控制器尚未加载博客文章,所以我不知道如何处理这个问题。除非我在断言中重复检索博客文章,但我希望有更好的方法。