Ric*_*ard 5 acl zend-framework2
我一直在按照本指南加载我的菜单配置,我认为加载菜单是非常好的和干净的方式.
我的问题很简单,有没有办法以配置数组和某种工厂的方式加载ACL配置?
如果没有,我如何加载ACL配置并以简单的方式使用该菜单?
谢谢!
编辑:这是一个非常好的博客文章,关于为什么使用已经完成的模块而不是自己创建的模块,http://hounddog.github.com/blog/there-is-a-module-for-that/
很可能有几种方法可以做到这一点,但我更喜欢在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)
ZF2包含ACL和RBAC(基于角色的ACL - 可能在ZF2.1中),但是为了实现它,更容易使用可插入应用程序的模块.BjyAuthorize在我看来有点臃肿,你必须使用ZfcUser模块.我更喜欢ZfcRbac,ACL规则基于用户角色(组)以及他们对控制器,动作或路由的访问.配置存储在一个配置文件中,真的很容易实现.