基于资源的ACL与基于控制器的ACL

时间:2010-10-08 19:36:13

标签: design-patterns zend-framework acl

管理对控制器操作的访问的传统方法是为每个/模块/控制器/操作创建资源(字符串标识符),然后检查控制器插件中的ACL。

最近我发现了非常方便的Zend_Acl_Resource_Interface,它可用于控制对实现它的任何类的访问。这样,任何Model,Form或其他应用程序元素都可以成为ACL资源。这是很常识的方法,因为这种方式应用程序资源成为ACL资源。

使用Doctrine监听器非常容易,因此控制器中根本不需要任何其他逻辑。

现在,我可以查看ACL,例如每当任何表单被实例化并最终重定向到登录页面时 但是如何隐藏使用限制形式,模型等的Zend Navigation项目 我是否还需要传统的,面向控制器的方法?每个导航元素是否需要单独的资源标识符?那么使用基于资源的ACL有什么好处呢?

1 个答案:

答案 0 :(得分:2)

您可以将相应的资源ID分配给Zend_Navigation页面项,将预定义的ACL和当前登录用户的角色设置为Zend_Navigation实例,导航助手在渲染之前检查ACL。请参阅此处的示例http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.navigation.acl