【发布时间】:2015-01-01 18:21:26
【问题描述】:
这是我第一次使用 Yii2 的 RBAC 系统。 我使用http://www.yiiframework.com/doc-2.0/guide-security-authorization.html 来熟悉主题。 因为我需要对角色/权限进行某种管理,所以我安装了这个扩展:https://github.com/mdmsoft/yii2-admin
我正在开发让用户提交文章的应用程序。有两种用户,管理员和普通用户。
我为此创建了 2 个角色。管理员角色和用户角色。
用户(管理员和用户)必须具有编辑文章的能力。管理员应该能够编辑任何文章,而用户只能编辑自己的文章。
为此,我创建了 2 个权限。 “编辑”权限和“EditOwn”权限。比我创建“IsOwner”规则并将其附加到“EditOwn”权限。
我将“编辑”权限分配给管理员角色,将“EditOwn”分配给用户角色,一切正常。
现在我想为每篇文章创建“锁定”状态。如果文章被锁定,即使是他自己的文章,用户也不能编辑它。即使它被锁定,管理员也应该能够对其进行编辑。
为此,我创建了新规则“IsLocked”,但我不知道如何将其添加到“EditOwn”权限。我不知道是否可以将 2 条规则附加到一个权限?
编辑: 现在,我有这个“处理”,因为我有额外的权限“EditOwnIsLocked”,我附加了“IsLocked”规则,它不是“EditOwn”的子级,它是“Edit”的子级。 这行得通,但感觉很脏,很简单,很简单。
【问题讨论】:
-
在数据库中处理
lock不是更好吗?我的意思是一个布尔列,它指示文章是否被锁定? -
我确实有。我希望“角色”通过检查数据库来检查文章是否被锁定,而不是拒绝用户并允许管理员。
-
你的意思,与角色定义无关。您可以检查访问权限,但不能检查文章是否被锁定。您想如何通过角色了解这一点?
-
Err 对不起,上面评论中的错字。不是角色,而是规则。现在我有权限:附加了“EditOwn”和“IsOwner”规则,我想要附加“IsLocked”规则,所以当文章被锁定时用户不能编辑。相同的“规则”(IsLocked)将用于“DeleteOwn”权限,还有一些用于检查独特的东西 + 文章已锁定。
标签: permissions rules yii2 rbac