代码之家  ›  专栏  ›  技术社区  ›  takeshin

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

  •  2
  • takeshin  · 技术社区  · 16 年前

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

    最近我发现很方便 Zend_Acl_Resource_Interface ,它可用于控制对实现它的任何类的访问。这样,任何模型、表单或其他应用程序元素都可能成为ACL资源。这是一种非常普通的方法,因为这样应用程序资源就变成了ACL资源。

    这对于条令侦听器来说非常容易,所以我根本不需要控制器中的任何额外逻辑。

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

    1 回复  |  直到 16 年前
        1
  •  2
  •   ngsiolei    16 年前

    您可以将相应的资源id分配给Zend_Navigation页面项,将预定义的ACL和当前登录的用户角色设置为Zend_Navigation实例,Navigation helper在呈现前检查ACL。请看这里的例子 http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.navigation.acl