给定一个根据某些用户权限显示对象(例如电影)的应用程序。
显示或创建对象的一般权限被实现为具有角色和权限的 RBAC。
访问具有某些属性的对象(例如具有“戏剧”属性的电影)的特定权限应通过成员资格来实现。这意味着该对象不具有“戏剧”属性,它是“戏剧”组的成员。如果用户和对象是同一组的成员,则用户具有访问该对象的特定权限。可以有不同的组用于显示、创建或删除对象,例如简单的查看器组或某种编辑器组。此外,还有一个表格指定了哪些组类型与对某些对象的某些操作相关。例如,对象“电影”上的动作“表演”的相关组可以是“类型”和“年龄”(电影对某些观众的适合性)。
以所描述的方式实现它的原因是在不接触代码的情况下具有很大的灵活性。可以在数据库中处理对组的更改。
通用数据库设计:
示例:电影“The Revenant”是“genre:drama”和“age:18”组的成员。如果他也是这些组的成员,则用户可以访问它。
这听起来像是一个好方法吗?是否有与这种方法类似的现有解决方案?它是否有很大的缺点(例如,数据库查询太多——每天可能有几百个用户)?
请与我分享您对这个问题的看法——选择“戏剧”作为示例的类别并非巧合;)我只是不知道这是一个死胡同还是我正朝着正确的方向前进。我在这一点上停留了很长一段时间。