假设我有对象A、B、C、D、E、F、C1、C2、user C1U1 (admin)、C1U2 (user)、C2U1 (admin)、C2U2 (user)。
A、C、E属于C1群。B、D、F属于C2群。
因此,只有关联编码组的成员才能查看各自的对象。而且,创建的任何对象都以其创建者(用户)所属的组结束。
管理员可以创建和编辑每个实体,用户只能创建实体和只编辑他的实体。
当然,如前所述,每个用户(管理员或常规用户)只能查看属于其组的实体。
在我的特定任务中,有实体类型的数量(静态)和用户类型的数量(静态)。将有多个协作组(动态),用户将在其中创建一些实体。一些用户将只能查看实体(由于他们是correspodning协作组的成员而被强制查看)、创建和编辑。其中一些用户将能够编辑其他用户的实体(但只有ceratin类型的实体)。本质上有点像JIRA。
话虽如此,我的问题很简单:什么模式有助于组织这些东西?我相信这是一个共同的问题,所以它必须有共同的名称。
我知道有一种直截了当的方法来创造这一切。我使用symfony 2,它有RBAC和ACL,但没有RBACL。RBAC将帮助我处理用户类型(我使用UserGroups,并创建类似于ROLE_EDIT_ENTITYTYPE1的角色),在ACL中执行所有权检查。
但是我如何实现这些协作小组呢?
我很抱歉,如果我的解释听起来含糊不清或只是愚蠢或其他任何事情,我想听到任何关于主题的信息。我有种感觉我在这里漏掉了什么东西。
PS:不确定“安全”标签是否与这个问题有关。
发布于 2013-09-30 08:41:19
就你的情况而言,公正的角色层次还不够充分。您需要的是完整的ACL:http://symfony.com/doc/current/cookbook/security/acl.html
保存实体时,可以在侦听器中创建ACL权限,然后为所有组成员授予访问权限。
您还可以使用不同的ACL掩码,以控制哪些用户可以编辑实体,哪些用户只能查看它们:advanced.html。
抱歉,主要是链接到默认文档,但我认为这基本上涵盖了所有您需要的内容。
https://stackoverflow.com/questions/19085084
复制相似问题