0

我正在创建一个 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 进行检查时,控制器尚未加载博客文章,所以我不知道如何处理这个问题。除非我在断言中重复检索博客文章,但我希望有更好的方法。

4

1 回答 1

0

我还在我的持久层中使用了学说,最后我使用学说的Lifecycle Events解决了这个问题。这允许您随时触发 acl-check:当加载或保存实体(例如博客文章)时等。

于 2014-04-27T19:59:53.663 回答