isAllowed 用于单个角色(不是角色继承的角色)

Posted

技术标签:

【中文标题】isAllowed 用于单个角色(不是角色继承的角色)【英文标题】:isAllowed for a single role (not roles the role inherits) 【发布时间】:2011-05-24 20:40:37 【问题描述】:

我试图找出一个角色是否可以使用 Zend Acl 显式访问资源,但是 Zend Acl 的 isAllowed 方法不仅检查角色,还检查指定角色继承的任何角色,我不关心,我只想知道自己的角色是否允许。

在某些情况下,我正在为管理员构建一个界面,以根据每个用户更改 acl 规则,因此我希望他们能够查看角色是否被明确允许、具有继承访问权限或被明确拒绝访问到资源。

【问题讨论】:

【参考方案1】:

通常您从某个地方读取 ACL 的设置,比如说数据库。那是你应该看的地方。无论如何你都需要写在那里。

【讨论】:

【参考方案2】:

我认为您以错误的方式查看 Zend_Acl。 整个系统是基于父/子的

如果您不需要父/子关系,则必须为每个角色定义每个规则:

访客可以登录 访客无法登出

用户可以登录 用户可以退出

或者您可以扩展 Zend_Acl 并创建自己的 isExplicitAllowed() 方法。

【讨论】:

以上是关于isAllowed 用于单个角色(不是角色继承的角色)的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL角色和权限理解

如何使 SQL Server 数据库在附加用户和角色成员资格时继承它们?

雪花系统角色 - USERADMIN 与 SECURITYADMIN

Oracle用户角色权限相关视图

转:SQL Server中服务器角色和数据库角色权限详解

Phalcon PHP - 获取所有允许的资源