gpt4 book ai didi

zend-framework - Zend_ACL 限制?

转载 作者:行者123 更新时间:2023-12-02 00:39:36 25 4
gpt4 key购买 nike

我正在考虑使用 Zend_ACL。但是,对我来说,您似乎创建了角色,然后向这些角色授予了他们可以访问或无法访问的 Controller 和操作的权限。

但是,对我来说,这似乎相当有限。我过去创建了一个用户权限系统,我在其中存储了 user_id、模块、 Controller 和他们可以访问的操作,但是我从来没有给他们一个组。因此,每个用户、每个模块、每个 Controller 、每个操作都基于他们可以访问的内容。

所以!我想知道我是否想减少对组的限制,我应该给用户一个组并默认设置这些组权限。然后加载我的用户特定角色并覆盖默认组设置的角色:你们会这样做吗?

最佳答案

您绝不仅限于使用角色系统来表示 Zend_Acl 中的组。

例如:

在一个应用程序中,我有我的基本用户对象,实现 Zend_Acl_Role_Interface,在这种情况下返回特定于用户的字符串。为简单起见,我们只说类似 user-1 的内容,其中数字部分是用户的唯一 ID。

初始化用户对象时,它会将自己添加到 ACL,用户特定角色继承自更通用的角色(类似于组):

if(!$acl->hasRole($this)) {
$acl->addRole($this, $this->role); // Let's say role == 'member' here
}

这允许您为父角色(或角色,您可以将数组作为第二个参数传递给 addRole,以拥有多个父角色)设置一般规则。另外,请记住,角色在树上一直有沿袭,所以在这种情况下,父角色本身也可能有父角色。)

因此,为了说明这里的灵 active ,让我们假设这个基本的 ACL 设置(这都是理论上的,我写它只是为了这个答案):

$acl->addRole('guest');
$acl->addRole('member', 'guest');

$acl->allow('guest', 'comments', 'read');
$acl->allow('member', 'comments', 'write');

$user = $My_User_Model->find(1);
$acl->allow($user, 'comments', 'moderate');



$acl->isAllowed($user, 'comments', 'read'); // true
$acl->isAllowed($user, 'comments', 'write'); // true
$acl->isAllowed($user, 'comments', 'moderate'); // true

$acl->isAllowed('member', 'comments', 'moderate'); // false

等等……

Zend Framework 组件的美妙之处在于您完全不受限于以一种特定方式使用它们。是的,虽然这有时会让人望而生畏,而且通常需要在初始规划和实现上投入更多时间,但从长远来看,这是非常好的。

此外,就个人而言,我不喜欢将 ACL 权限直接映射到 Controller /操作结构。但那是完全不同的对话。

关于zend-framework - Zend_ACL 限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3143046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com