8

在设计新的相当大/复杂的网站时,我正在深入研究 RBAC。我试图弄清楚是创建一个任务还是简单地使用 biz 规则进行操作。

现在,我已经阅读了大部分(如果不是全部)现有文档。当前的文档说“任务由操作组成”。这篇wiki 文章说不同的术语只是命名约定,唯一存在的限制是结构上的限制——角色必须包括任务(或其他角色);任务应该包括操作(或其他任务),操作是原子术语,不由其他实体进一步组成。我还阅读了“Agile web dev...”和“Yii cookbook”书籍中的相关部分 - 两者都没有进一步阐明这个问题(至少从我的眼镜来看)。

让我们来看我提出问题的例子。实际上,让我们使用一个类似于上面提到的大多数文档资源中演示的示例:假设我有一篇博客文章,我希望/需要让其作者能够“更新自己的文章”。现在,为什么这应该是文档资源中通常展示的任务,而不是具有 biz 规则的操作?

我认为上面的问题揭示了“任务”的不明确定义(当然是在 RBAC 上下文中)。

请帮助我为 RBAC 任务提炼出更好的定义。

编辑:有人建议我对上述术语进行以下定义,这些定义有助于以有用的方式将它们概念化。简而言之,最简单的形式是:操作是基本的构建块。他们是材料开发人员,并且只有他们。开发人员在操作之上和之上组成任务。角色由任务组成,就像一组任务。角色和任务是站点管理员应该使用的——分配和撤销给用户,而不是操作。这是查看和掌握这些实体(角色、任务和操作)的好方法。您还有其他选择来进行不同的概念化吗?任何意见将不胜感激。

蒂亚!波阿斯。

4

3 回答 3

3

我会说和你在问题编辑中所做的一样。任务只是用户可以执行的具有共同点的操作的组合。因此,您有例如操作oList, oView,这些是开发人员分配给控制器操作以进行访问控制的操作,其中前两个仅是读取的,而后两个具有对数据的写入访问权限(这就是它们的共同点)。因此,您现在想要将它们组合到任务中,并且它们都包含 2 个操作,第一个可以列出和查看,第二个可以创建和更新。或者,您可以创建一个子任务,以便用户可以列出、查看、更新和创建,但通常您只需将这两个任务都赋予他的角色。oCreateoUpdatetInspecttManagetInspecttManagetManage

于 2012-03-13T04:04:46.870 回答
2

关于角色 -> 任务 -> 操作的分类,它们本质上是一样的,你可以在代码中看到它们是 CAuthItem 类。我们主要从用户的角度对它们进行不同的命名。

  • 操作仅供开发人员使用,它们代表最高级别的权限。

  • 任务建立在开发人员的操作之上。它们代表 RBAC 管理员使用的基本构建单元。

  • 角色由管理员建立在任务之上,可以分配给用户或用户组。

以上是建议,不是要求。一般来说,管理员只能看到任务和角色,而开发人员只关心操作和任务。

看看这个:http : //www.yiiframework.com/forum/index.php/topic/2313-rbac-confusion/page_p_16035#entry16035

于 2013-07-16T10:03:26.933 回答
1

如果有两个用户 1) 管理员 2) 用户

所以我们为更新页面设置角色 updatePost。
管理员是 updatePost 的父级,因此管理员可以更新。用户具有 updateOwnPost 权限。updateOwnPost 是具有 bizrule 的 updatePost 的父级。所以如果 bizrule 满足他可以更新

于 2012-06-08T21:01:48.440 回答