首頁  >  文章  >  後端開發  >  phpGACL汉语手册(九)扩展权限对象

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

WBOY
WBOY原創
2016-06-13 11:01:47860瀏覽

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对象的列表才会被搜索。基于上述理论也使系统在性能上有所提升。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn