2011-07-18 55 views
2

我正在为我的工作中的Web应用程序查看基于角色的身份验证。我们使用coldfusion,它似乎没有任何好的rbac库,所以我们可能必须从头开始创建一个。RBAC系统中的“对象”

看着示例数据模型,对象绑定到权限。

http://www.mind-it.info/2010/01/09/nist-rbac-data-model/

它看起来像一个对象和权限之间多对多的关系,这是有道理的。

但是,我想知道这些“对象”应该是抽象的还是具体的?

我们的系统将有一些有限类型的对象;为了举例,让我们说“新闻”,“事件”和“专辑”。权限和角色很可能归因于这些类型,因为任何这些类型的所有对象实例都需要对不同角色具有相同的权限和可访问性。

在这个例子中,我看着它,在我看来,对象的每个实例都附加到权限。如果是这种情况,我看到在这种类型的系统中有很多开销...

所以,我想知道这些“对象”实际上是否是与角色关联的抽象对象类型,或者如果这些“对象”本身就是实际的对象实例? (或者,如果rbac模型允许执行......)

谢谢!

+0

你看了? – Henry

回答

0

您应该将权限绑定到对象。是的,开发它时会有一些开销,但它是迄今为止最好的情况。

想想吧,在开发的时候可以说“添加新闻条目”功能,您可以创建一个名为“addNewsItem”的权限。然后,您只需将该权限与您希望拥有该能力的角色关联即可。

这个系统的美妙之处在于,一旦您将权限绑定到对象(如添加项目),则无需在用户或角色发生更改时对其进行更改。 “添加新闻项目”将始终需要“addNewsItem”权限。这永远不会改变。

如果你用例如角色包装你的对象,而你决定添加一个新角色 - 你将会进入并更改代码以允许该角色的任何权限。呸。

其实很容易实现。这里有一个职位,我对执行一些基本做到:

ColdFusion: Application Options Based on Role?