Design patterns 基于资源的ACL与基于控制器的ACL
管理对控制器操作的访问的传统方法是为每个/module/controller/action创建资源(字符串标识符),然后检查controller插件中的ACL 最近我发现了非常方便的Design patterns 基于资源的ACL与基于控制器的ACL,design-patterns,zend-framework,acl,Design Patterns,Zend Framework,Acl,管理对控制器操作的访问的传统方法是为每个/module/controller/action创建资源(字符串标识符),然后检查controller插件中的ACL 最近我发现了非常方便的Zend\u Acl\u Resource\u接口,它可以用来控制对实现它的任何类的访问。这样,任何模型、表单或其他应用程序元素都可能成为ACL资源。这是一种非常普通的方法,因为这样应用程序资源就变成了ACL资源 对于条令侦听器,这变得非常容易,因此我根本不需要控制器中的任何附加逻辑 现在,我可以检查ACL,例如,无
Zend\u Acl\u Resource\u接口
,它可以用来控制对实现它的任何类的访问。这样,任何模型、表单或其他应用程序元素都可能成为ACL资源。这是一种非常普通的方法,因为这样应用程序资源就变成了ACL资源
对于条令侦听器,这变得非常容易,因此我根本不需要控制器中的任何附加逻辑
现在,我可以检查ACL,例如,无论何时实例化任何表单,并最终重定向到登录页面。但是,如何隐藏使用受限表单、模型等的Zend导航项。
我是否也需要传统的、面向控制器的方法?每个导航元素是否需要单独的资源标识符?使用基于资源的ACL有什么好处?您可以将相应的资源id分配给Zend_导航页面项目,将预定义的ACL和当前登录用户的角色设置为Zend_导航实例,导航助手在呈现前检查ACL。请参见此处的示例谢谢,但您应该仔细阅读问题。考虑下面的情况:我有一个页面/创建有两种形式(例如,搜索和创建),它们的资源标识符占用资源并创建资源。我应该在导航中使用哪一个?我仍然需要为url访问创建新资源。。。