Zend Acl - Modules, Controllers, Actions and Models
我花了整整一天的时间在SO上寻找关于如何实现Zend_Acl的教程和答案,就像在其他站点中一样。我头疼。 :X
我看到人们使用它来允许或禁止访问某些控制器/动作,而其他人则说这种方式是不正确的,并且应该基于模型来允许或禁止访问。嗯,第二个似乎可行,但是,这意味着对于每个控制器我都需要一个模型?因为看起来,按照第二种选择,我只能在例如编辑帖子时阻止用户访问。但是我想阻止访问编辑帖子的控制器的操作。
如果我想阻止角色为X的用户访问控制器Z的动作Y,那么如果我遵循第二种选择,该怎么办?
非常欢迎使用真实应用程序的示例。
此信息可以改善您的答案:
我使用Doctrine 2作为ORM,并且有一个模块Admin。我的应用程序的实际结构是这样的:
1 2 3 4 5 6 7 8 9 10 | application - MYAPP - configs - controllers - layouts - views - library - MYAPP ;This folder is in the include path - modules - admin |
我承认自己不是
对我来说,关键是识别资源。
在您的情况下,听起来好像您已将控制器明确标识为资源。如果需要更细粒度的访问控制,则可以将特权定义为操作。这似乎足够灵活,以至于甚至不需要使用模型的控制器(也许应该只向特定类型的登录用户显示的静态页面等)也可以由ACL控制。
在某些情况下,您会发现您的资源/特权"自然"对应于模型/方法。但是我认为,如果控制器/动作与您对程序流程和ACL要求的理解更加紧密地匹配,您不应该强迫自己将ACL纳入该范式。
这并不是您问题的直接答案。更像是忠实于您自己阅读情况的建议。