permissions - Yii2 RBAC 权限可以有多个规则吗?

标签 permissions rules yii2 rbac

这是我第一次使用 Yii2 的 RBAC 系统。 我用了http://www.yiiframework.com/doc-2.0/guide-security-authorization.html让自己熟悉主题。 因为我需要对角色/权限进行某种管理,所以我安装了这个扩展:https://github.com/mdmsoft/yii2-admin

我正在开发让用户提交文章的应用程序。有两种用户,管理员和普通用户。

我为此创建了 2 个角色。管理员角色和用户角色。

用户(包括管理员和用户)必须能够编辑文章。管理员应该能够编辑任何文章,而用户只能编辑他们自己的文章。

为此我创建了 2 个权限。 “编辑”权限和“EditOwn”权限。比我创建“IsOwner”规则并将其附加到“EditOwn”权限。

我为 Admin 角色分配了“编辑”权限,为用户角色分配了“EditOwn”权限,一切正常。

现在我想为每篇文章创建“锁定”状态。如果文章被锁定,即使是自己的文章也不能编辑。即使它被锁定,管理员也应该能够对其进行编辑。

为此,我创建了新规则“IsLocked”,但我不知道如何将其添加到“EditOwn”权限。我不知道是否可以将 2 条规则附加到一个权限?

编辑: 现在,我有这种“处理”的方式,我有额外的权限“EditOwnIsLocked”,我附加了“IsLocked”规则,而不是“EditOwn”的子项,“EditOwn”是“编辑”的子项。 这行得通,但感觉很脏,而且简单明了。

最佳答案

事实证明,(目前)没有办法将多个规则附加到一个权限。

您可以按照我现在的方式处理多个规则的需要,方法是创建额外的权限并附加规则,而不是建立子<->父连接,或者您可以编辑规则以检查所有情况(在我的情况是检查 IsParent 和 IsLocked)。

这些解决方案并不完美,但目前是这样。第一个解决方案产生不必要的权限,并使您的权限列表困惑(如果您使用 yii2-admin 或类似的扩展),但保持您的规则干净,第二个解决方案保持您的权限列表干净但让您在多个规则中重新键入相同的代码这是有点反对 OOP 的含义。

关于permissions - Yii2 RBAC 权限可以有多个规则吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26759231/

相关文章:

php - 如何在yii2中编写sql查询

Yii2 从相关模型中只选择几列

android - PhoneGap 中 Android Marshmallow 的应用权限

audio - Expo-Audio在iOS上不起作用。它本身卡在录制按钮上

c# - .NET 的规则引擎

html - gmail html 预览删除具有分页属性的 css 规则

ubuntu - 允许单个组拥有多个组的访问权限

linux - 无法CD进入具有755权限的目录吗?

sql - 如何将存储在表中的 SQL 语句用作另一条语句的一部分?

ckeditor - Yii 2 CKeditor 未通过验证