欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

phpGACL汉语言手册(七)

程序员文章站 2022-05-16 18:06:33
...
phpGACL中文手册(七)

解决冲突

如果我们把Chewie加入到工程师组中会出现什么情况呢? 缺省:全部拒绝
千年隼号乘客

船员 [允许:全部]
│├─Han
│├─Chewie [
拒绝:发动机室]
│└─Lando

├─
乘客 [允许:休息室 ]
├─
绝地战士 [允许:驾驶室]
││├─
Obi-wan
││└─
Luke [
允许:武器室]
├─R2D2 [
允许:发动机室]
└─C3PO

工程师 [允许:发动机室,武器室]
├─Han
├─R2D2
├─Hontook
└─Chewie

这就使Chewie到发动机室的权限产生了歧义,因为从根沿树遍历到Chewie出现两条路径。如果飞船的计算机沿其中一条路径(船员路径),将得到"拒绝进入发动机室"的结论。而沿另一条路径(工程师路径)则会得到"允许进入发动机室"的结论,那么他到底有没权进入发动机室呢?

当你添加或编辑分属多组的ARO对象使之对某个ACO对象的权限发生歧义时,phpGACL系统将警告你。但它会最近优先以便解决冲突。

如果我们现在问phpGACL"Chewie有权进入发动机室吗?"那么返回的结果是最近ACL被修改的内容(这是phpGACL的策略)。在上面这个例子中,返回的结果是"允许",因为被工程师组指定的"允许:发动机室,武器室"权限的时间要比被船员组指定的"拒绝:发动机室"权限时间要近。

当有歧义的权限设定在ACL列表中存在时,该ACL列表被称为不一致。不一致的ACL列表是非常危险的,如果你允许你的ACL列表保持在这种状况下的话,你可能会在不经意之下把权限赋给不恰当的人。当phpGACL警告你ACL列表不一致时,最好还是去解决冲突以尽可能恢复其一致性。

为解决上例的冲突,我们可以作以下任何一步:

  • 删除在船员组中Chewie的"拒绝:发动机室"指令
  • 添加在工程师组中Chewie的"拒绝:发动机室"指令
  • 在工程师组中删除Chewie,因为Han无论如何不认为他作工程师是一件值得考虑的事

Han选了第三种方案,将Chewie从工程师组中删除

phpGACL汉语言手册(七)

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频