【问题标题】:What exactly are "tasks" in Yii's RBAC?Yii 的 RBAC 中的“任务”到底是什么?
【发布时间】:2012-02-20 07:25:10
【问题描述】:

在设计新的相当大/复杂的网站时,我正在深入研究 RBAC。 我正在尝试确定是创建一个 task 还是简单地创建一个具有 biz 规则的 operation

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

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

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

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

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

TIA! 波阿斯。

【问题讨论】:

    标签: yii rbac


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

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

      【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-11-04
        • 2021-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-29
        • 2012-06-11
        相关资源
        最近更新 更多