0

我有一个基于角色的权限系统,我不确定 Zend_Acl 是否必要,所以我想问一下我是否正确。

有问题的 Web 应用程序没有单独的管理屏幕,任何人都可以访问所有控制器/操作。所以我无法想象在这样的开放系统中我可以称之为“资源”。

但是某些用户角色可以看到未按用户 ID 过滤的网格 - 因此超级管理员可以看到所有数据,而“x 管理员”可以看到所有“x”数据。

在这种情况下 Zend_acl 系统是否过度?没有它,事情会很简单,我只需在 init() 中获取用户角色并在控制器的某些部分检查它。

4

1 回答 1

4

仅仅因为 ZF 中存在某些东西,并不意味着您必须不惜一切代价使用它。您不会因此获得奖励积分。如果您觉得 Zend_Acl 对您的用例来说太过分了,请使用您更简单的方法。这是完全可以接受的。

实际上,在我的一个应用程序中,我正在使用一个ActionHelper来检查用户的角色。帮助程序有一个方法requireRole()可以将所需角色作为字符串接受。现在,当我需要限制一个动作时,我只需调用这个辅助方法作为第一件事。如果我需要限制整个控制器,我会在init()方法中调用。缺点是访问控制不是集中的。

在另一个应用程序中,我只有一个需要访问限制的控制器。在那个应用程序中,我使用了一个ControllerPlugin来检查请求的控制器是否是受限控制器,以及用户是否具有所需的角色。这也很好,我可以根据需要在检查中添加额外的控制器。

所以,使用适合的:)

于 2009-12-17T15:44:43.903 回答