RBAC 问题 一个 Permission 多个 rule [ 2.0 版本 ]
一个Permission可以绑定多个rule吗?
最近有个项目 有三种角色(role) 版块管理员,版块内小组管理员,普通用户.
权限验证的时候需要验证版块管理员属于这个版块可以管理所有小组,小组管理员需要属于这个小组.
问题:
- 一个rule验证是否属于版块(传入参数cate_id),一个rule验证是否属于小组(传入参数team_id).这两条rule能不能绑定给一个Permission?
- 假如能绑定,调用Permission时怎么传入参数,是需要把这两个参数全部传入然后yii自动根据role选择参数验证吗?
最佳答案
-
不可以。
角色和权限本质是 yii\rbac\Item, Rule 跟 Item 没有关系,Rule 只能依附在 Item 上存在,且一个 Item 只能有一个 Rule.
共 2 条回复@jorge Rule 所需的额外参数需要在 can() 的第二个参数内传递,参数的个数也随意。你采用传 category_id, team_id 的做法也可以,但是可读性不是太好,推荐像官方那样直接传入 AR 模型实例的做法,即传入的是具体的版块或小组实例而不是 id. 你看 https://www.yiiframework.com/doc/guide/2.0/en/security-authorization#using-rules 里面的
AuthorRule
需要的参数是 $post 而非 post_id
其他 1 个回答
jorge
注册时间:2016-10-31
最后登录:2024-03-01
在线时长:15小时25分
最后登录:2024-03-01
在线时长:15小时25分
- 粉丝0
- 金钱90
- 威望0
- 积分240