【发布时间】:2016-03-13 10:41:29
【问题描述】:
模型(表格):
- 项目(id、名称、category_id、status_id)
- 类别(ID、名称)
- 状态(ID、姓名)
我需要按确切的类别和确切的状态限制对项目的访问。
情况 1.
Role1 应有权访问类别 ID 为 1 和 3 的项目,但 Role2 应有权访问类别 ID 为 2 和 4 的项目。
情况2。
角色应该有权访问项目: 类别 1,但仅限状态 5 或 6 具有类别 2,但仅限于具有状态 7 或 8 的那些
可以创建和删除类别和状态。
如何在 RBAC 概念中实现这样的访问控制?
对于情况 1,我的想法是动态创建具有“accessItemWithCategory_{$categoryId}”等名称的权限,并将其分配给适当的角色,然后检查用户是否可以(“accessItemWithCategory_{$categoryId}”)。它有效,但感觉不对。
对于情况 2,如果继续这种方法,我会获得像“accessItemWithCategory_{$categoryId}_Status_{$statusId}”这样的权限,它只是丑陋且极其不灵活。
如果不在权限名称中使用 id 比什么?我可以使用简单的权限“accessItem”和规则来检查带有角色和项目参数的额外表,这些参数将允许角色访问项目?但这意味着将授权控制移到 RBAC 之外,并通过角色层次结构支持地狱。
【问题讨论】:
-
为您的权限编写自定义规则。
-
@ineersa 是的,但是我应该在自定义规则中做什么?
标签: authorization yii2 access-control rbac abac