我有一个基于角色的权限系统,我不确定Zend_Acl是否必要,所以我想问我是不是。
有问题的网络应用程序没有单独的管理界面,任何人都可以访问所有控制器/操作。所以我无法想象在这样一个开放的系统中我可以称之为“资源”。
但是某些用户角色可以看到未按用户ID过滤的网格 - 因此超级管理员会看到所有数据, 和“x admins”查看所有“x”数据。
在这种情况下,Zend_acl系统是否过量?如果没有它,事情会很简单,我只是在init()中获得用户角色并在控制器的某些部分检查它。
答案 0 :(得分:4)
仅仅因为ZF中存在某些东西,并不意味着你必须花费任何成本。你没有获得奖励积分。如果您觉得Zend_Acl对于您的用例来说有点过分,请使用更简单的方法。这完全可以接受。
实际上,在我的某个应用中,我使用ActionHelper
来检查用户的角色。帮助程序有一个方法requireRole()
,它接受所需的角色作为字符串。现在,当我需要限制一个动作时,我只是简单地调用这个辅助方法。如果我需要限制整个控制器,我将调用放在init()
方法中。缺点是,访问控制不是集中的。
在另一个应用程序中,我只有一个需要访问限制的控制器。在该应用程序中,我使用ControllerPlugin
来检查所请求的控制器是否是受限制的控制器,以及用户是否具有所需的角色。这也很好,我可以根据需要在支票上添加额外的控制器。
所以,使用什么适合:)