正在研究我工作中的Web应用程序的基于角色的身份验证。我们使用coldfusion,它似乎没有任何好的rbac库,所以我们可能必须从头开始制作。
查看示例数据模型,对象与权限相关联。
http://www.mind-it.info/2010/01/09/nist-rbac-data-model/
它看起来像对象和权限之间的一对多关系,这是有道理的。
但是,我想知道这些“对象”应该是抽象的还是具体的?
我们的系统将有一些有限类型的对象;为了举个例子,让我们说“新闻”,“事件”和“专辑”。权限和角色很可能会归因于这些类型,因为任何这些类型的所有对象实例都需要相同的权限和不同角色的可访问性。
在我查看的示例中,在我看来,对象的每个实例都附加到权限。如果是这种情况,我会在这种类型的系统中看到很多开销......
所以,我想知道这些“对象”是否实际上是与角色相关的抽象对象类型,或者这些“对象”是否是实际的对象实例本身? (或者,如果rbac模型允许实现......)
谢谢!
答案 0 :(得分:0)
您绝对应该将权限绑定到对象。是的,在开发它时会有一些开销,但它是迄今为止最好的情况。
考虑一下,在开发时我们说“添加新闻项”功能,您可以创建一个名为“addNewsItem”的权限。然后,您只需将该权限与您希望具备该功能的角色绑定。
这个系统的优点在于,一旦您编写了与对象相关的权限(如添加项),您就不必在用户或角色发生变化时进行更改。 “添加新闻项”将始终需要“addNewsItem”权限。那永远不会改变。
如果您改为使用角色包装对象,并且决定添加新角色 - 那么您将进入并更改代码以允许该角色获得任何权限。呸。
实际上很容易实现。这是我在实施方面的一些基础知识的帖子: