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

发布于 2024-09-26 21:04:17 字数 435 浏览 3 评论 0原文

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

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

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

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

The traditional approach to manage access to controller actions is to create resource (string identifier) for each /module/controller/action, then check the ACL in controller plugin.

Lately I discovered very handy Zend_Acl_Resource_Interface, which can be used to control access to any class implementing it. This way, any Model, Form or other application element may become ACL resource. This is quite common sense approach, because this way application resources become ACL resources.

This becomes extremely easily with Doctrine listeners, so I don't need any additional logic in the controller at all.

Now, I can check the ACL e.g. whenever any form is instantiated and eventually redirect to login page.
But how can I hide Zend Navigation items which use restricted forms, models etc.
Do I need the traditional, controller oriented approach as well? Do I need a separate resource identifier for each navigation element? What's the benefit of using resource based ACL then?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

最近可好 2024-10-03 21:04:17

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

You can assign the corresponding resource id to Zend_Navigation page items, set predefined ACL and current logged in user's role to the Zend_Navigation instance, Navigation helper checks the ACL before render. Please see the example here http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.navigation.acl

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文