> 백엔드 개발 > PHP 튜토리얼 > phpGACL汉语言手册(七)

phpGACL汉语言手册(七)

WBOY
풀어 주다: 2016-06-13 13:04:21
원래의
743명이 탐색했습니다.

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 从工程师组中删除

관련 라벨:
acl
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿