Plone的多级安全性?

时间:2011-03-10 17:52:35

标签: security workflow plone

有什么办法可以完成以下任务吗?

我想Plone中的每个对象都会与另外一个安全分类相关联(例如' alpha'' bravo'' zulu')。这些分类将成为内容类型架构的一部分。在运行时,将用户的安全凭证与对象进行比较,并且当且仅当用户具有 all 对象的凭证时,该对象才是可见的。我无法在工作流程中看到这样做的任何方式。

接受建议。谢谢!

斯坦

3 个答案:

答案 0 :(得分:2)

你需要一个可以检查用户凭据的localrole适配器(可能你已经有一个给他们提供这样的凭证,因为 - 除了角色的基本概念 - 它们在基础Plone中不存在),并且授予local_role根据结果​​。

请参阅:http://plone.org/products/plone/roadmap/208

它可能就像提供__ac_local_roles()方法一样简单,但如果没有,borg.localrole现在是Plone的一部分,该链接应该让你开始。

答案 1 :(得分:2)

请记住,CMFWorkflow允许对象拥有多个与之关联的工作流。您可以将方案的各个级别实现为单个工作流,然后将它们附加到对象。

答案 2 :(得分:1)

以下是如何使用工作流程来完成的工作。注意我不是说你应该用工作流来做,只是你可以;) 你需要一个(大)数量的州。多大程度取决于安全状态的组合(!=排列)。在n个事物中选择m事物的组合由下式给出:

n!/(m!(n-m)!),

在哪里!是因子。

例如,对于您给出的示例,您有3个安全状态alpha,bravo和zulu。这给出了:

3!/(1!2!) + 3!/(2!1!) + 3!/(3!0!) = 3 + 3 + 1 = 7

总和是将1,2或3个组合在一起的组合。 所以你去了,总共有7个州;)

过渡是一种不同的野兽。如果你确实需要能够从这些组合状态中的任何一个进入任何其他状态,那么你将不得不计算排列,因为从a到b的变化与从b变为a不同。排列由下式给出:

n!/(n-m)!

即。对于上面的7个州,你将有7个!/(7-2)!= 7 * 6 = 42(!!!)过渡。您当然可以通过仅允许每次添加/删除一个安全状态来简化转换。 你去了,我希望你读这本书的乐趣和我写的一样多:)