我们目前工作的一个项目,其中主要的域对象是内容节点,我们使用的是ACL-like系统,其中层次结构中的每个节点都可以包含覆盖或补充那些对父母的规则。例如,一切都基于角色和行为。策略快速遍历ACL
Node 1 - {Deny All, Allow Role1 View}
\- Node 2 - {Allow Role2 View}
\- Node 3 - {Deny Role1 View}
在这种情况下,规则将从上到下依次读取,因此节点3只能由Role2查看。这个概念并不复杂。
检索单个节点的规则可能会导致一些查询,获取所有父级,然后重新创建规则列表并对其进行评估,但是此过程可能非常麻烦,因为层次结构可能会变得非常深,并且可能会有一个每个节点上都有很多规则。
我一直在思考与准备每当权限更改并将其传播到一个更新的所有叶子节点可能被重新创建每个节点预先计算规则的表。
你认为任何其他战略,加快规则的检索和计算的?理想情况下,它应该在单个查询中完成,但树并不是最好的结构。
非常有帮助的回应,我想你是隐含地说:预先计算所有(在一个或多或少复杂的策略)。 – 2010-04-14 16:00:16
一点都不浪费,这很浪费。我的意思是懒惰地计算(根据需要计算并缓存结果)并使用观察者模式来知道何时不推荐使用缓存的结果。 – 2010-04-14 17:09:00