在Zend Framework 2中加载ACL的简单方法?

Ric*_*ard 5 acl zend-framework2

我一直在按照本指南加载我的菜单配置,我认为加载菜单是非常好的和干净的方式.

我的问题很简单,有没有办法以配置数组和某种工厂的方式加载ACL配置?

如果没有,我如何加载ACL配置并以简单的方式使用该菜单?

谢谢!

编辑:这是一个非常好的博客文章,关于为什么使用已经完成的模块而不是自己创建的模块,http://hounddog.github.com/blog/there-is-a-module-for-that/

Den*_*bov 5

很可能有几种方法可以做到这一点,但我更喜欢在getViewHelperConfig()应用程序中进行Module.php(这里我使用BjyAuthorize模块来简化ACL的工作,特别是它允许在配置文件中设置ACL规则module.bjyauthorize.global.php)

public function getViewHelperConfig()
{
    return array(
        'factories' => array(
            'navigation' => function($sm) {
                $auth = $sm->getServiceLocator()->get('BjyAuthorize\Service\Authorize');
                $role = $auth->getIdentityProvider()->getIdentityRoles();
                if (is_array($role))
                    $role = $role[0];

                $navigation = $sm->get('Zend\View\Helper\Navigation');
                $navigation->setAcl($auth->getAcl())->setRole($role);

                return $navigation;
            }
        )
    );
}
Run Code Online (Sandbox Code Playgroud)

  • 我在ZF1中使用类似[this](http://blog.hackix.com/2009/12/zend_acl-zend_navigation/)的内容,非常简单明了.我觉得很奇怪,我找不到ZF2那么简单的东西.所有这些模块都让人觉得复杂. (2认同)

Zde*_*hek 5

ZF2包含ACL和RBAC(基于角色的ACL - 可能在ZF2.1中),但是为了实现它,更容易使用可插入应用程序的模块.BjyAuthorize在我看来有点臃肿,你必须使用ZfcUser模块.我更喜欢ZfcRbac,ACL规则基于用户角色(组)以及他们对控制器,动作或路由的访问.配置存储在一个配置文件中,真的很容易实现.