2
我一直在阅读Zend框架的Zend_Acl组件。我想实现一个数据库驱动的解决方案,但已经注意到它看起来像我要加载数据库中的所有角色,权限和资源来构建一个ACL。它看起来并不容易,也可能根据需要将这些规则延迟加载到ACL中。它看起来像是实现了任何延迟加载,整个Zend_Acl类必须被删除。有没有人有这样一个良好的例子可以实现?Zend Acl数据库驱动加载所有数据
我一直在阅读Zend框架的Zend_Acl组件。我想实现一个数据库驱动的解决方案,但已经注意到它看起来像我要加载数据库中的所有角色,权限和资源来构建一个ACL。它看起来并不容易,也可能根据需要将这些规则延迟加载到ACL中。它看起来像是实现了任何延迟加载,整个Zend_Acl类必须被删除。有没有人有这样一个良好的例子可以实现?Zend Acl数据库驱动加载所有数据
我建议的方法是从数据库中构建ACL并使用Zend_Cache进行缓存,这样就不需要加载每个请求。
首先,使用$acl = new Zend_Acl();
构建ACL对象然后从数据库中获取您的角色,资源和权限。通过你的资源和角色的循环,并添加他们$acl->addResource()
和$acl->addRole()
,然后用$acl->allow()
假设你已经自举你$cache
对象添加权限,它可以在这里找到(通过合适的词汇或其他),这样做:
if (($acl = $cache->load('acl')) === false) {
$acl = $this->_buildACL(); // Build you ACL in the _buildAcl() method
$cache->save($acl, 'acl', array('ACL'));
}
Zend_Registry::set('acl', $acl);
懒加载如何知道要加载的资源或规则? – 2013-02-14 17:45:10