我有一个关于 rbac 系统的问题。我想我已经很好地理解了它,但我需要有关特殊情况的更多信息。
我想对组而不是用户进行自动化。我的意思是,例如“HR”组有权创建一个人。那么任何加入这个小组的人都会拥有它。
让我给你更多的信息。
我的数据库的一部分:
这是我的组层次结构的一部分:
所以我正在寻找的,这将是必须的,是一个每个组都有一些授权的系统。人们得到他们的组和他们父母组的授权(例如“Forsys”中的人有“Forsys”、“R&D”和“管理”的授权)。
我目前看到的解决方案是使用bizrule。但我不确定在数据库中编写 php 代码是一个好主意,然后如果我更新组层次结构(R&D 继承 RH 而不是管理),我将不得不修改数据库中的 bizrule。我试过了,效果很好,但是你可以看到它需要很多代码。
$user = User::model()->with("people","people.groups")->findByPk(Yii::app()->user->id);
foreach($user->people[0]->groups as $group)
if($group->id == 2)
return true;
return false;
仅用于查看用户是否在组中(不检查父组和层次结构)
另一种可能性是创建一个新表“group_auth”,例如:
-Group_2 具有角色“managePerson”
-Group_3 有操作“deleteUser”...
然后每次在组中添加或删除用户时,我们都会在 auth_assigment 表中更新他的授权。
我想听听关于这个主题的其他意见。所有评论将不胜感激:)
感谢您的阅读,如果您在理解我时遇到困难,请原谅我的英语。
迈克尔·S。