Home  >  Article  >  Backend Development  >  phpGACL汉语手册(九)扩展权限对象

phpGACL汉语手册(九)扩展权限对象

WBOY
WBOYOriginal
2016-06-13 11:01:47860browse

phpGACL中文手册(九)扩展权限对象

扩展权限对象

phpGACL中可以通过配置扩展权限对象(AXO对象)为第三方添加权限。我们已经知道了phpGACL是如何将ARO对象和ACO对象组成一个访问控制策略指令的,这主要用于简单的权限要求如:

LukeARO对象)要求访问"武器室"(ACO对象)的权限

如果这是你所需要的,那么AXO对象就完全是可选的了!

但是由于所有的ACO对象都是相同的,因此如果它们存在很多的话那管理起来将是困难的。如果是这样情况的话,我们可以通过改变思考权限对象方式来使其管理起来更加容易。

AXO对象在许多方面同ARO对象是一样的。这有一个AXO树(是从ARO树中分离出来的)有着自己的组和AXO对象。在处理AXO对象时,以看待ACO对象的方式来看待AXO对象(即"需要权限控制的事物"),而改变看待ACO对象的方式,从"需要权限控制的事物"变成"被要求的运作"。

看待只有AROACO对象的方式:

  • ARO对象:要求权限的事物
  • ACO对象:需要权限控制的事物

看待AROACOAXO对象的方式:

  • ARO对象:要求权限的事物
  • ACO对象:被要求的动作
  • AXO对象:需要权限控制的事物

例如:

一个网站管理员想要管理访问该网站中项目的权限。一个由所有用户组成的ARO树如下所示: Website(网站)
├─Administrators
(管理者)
│ ├─Alice
│ └─Carol
└─Users
(用户)
├─Bob
└─Alan

AXO树中通过操作系统分类项目被组织成: Projects(项目)
├─Linux
│ ├─SpamFilter2
│ └─AutoLinusWorshipper
└─Windows
├─PaperclipKiller
└─PopupStopper

对于每个项目而言,动作是"观看"和"编辑"。这些是ACO对象。

现在我们想要Bob对所有的Linux项目有"观看"的权限,因此可以添加一个ADPBobARO对象与观看的ACO对象和LinuxAXO对象连接在一起。于是我们可以问一个问题:

BobARO对象)要求对一个叫Linux的项目(AXO对象)有"观看"(ACO对象)的权限

记住AXO是可选的,如果你在调用acl_check()函数时没有指明AXO对象或匹配到一个没有AXO对象的ADP,这是允许的。然而如果只有AXO对象的APD而你却调用没有AXO对象的acl_check()函数,那么系统将失败。

所以一旦你在调用acl_check()函数时指定了AXO对象的话,acl_check()函数就只搜索含有AXO对象的ACL列表。如果AXO对象没有被指定,那么只有不含有AXO对象的列表才会被搜索。基于上述理论也使系统在性能上有所提升。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn