Yii2的RBAC一共是用到了五张表  四张auth表+一张user表,你如果会ThinkPHP的RBAC,那么你会发现Yii2的RBAC比ThinkPHP的RBAC和AUTH更加容易理解和强大!

创建表

Yii2 RBAC用到的四张auth表位于 vendor/yiisoft/yii2/rbac/migration文件夹里面,你可以用migration生成。或者使用下面的sql语句。我用的Yii2 advanced模板。这里假定你已经生成了user表

表结构如下

Yii2  RBAC 用法入门 — 附代码-安全者

 

每个表的功能

这里我们是讲的RBAC入门 ,所以部分字段和一些高级用法将在以后的高级教程中讲解。

auth_item :储存权限 ,name为权限名  type为1  其他字段均为默认

看下图,我们可以把admin理解为一个用户组,后两个理解为控制器中的两个方法。

Yii2  RBAC 用法入门 — 附代码-安全者

 

auth_item_child: 角色权限关联表 ,和上面的auth_item相关联,两个字段均对应auth_item表的name字段

看下图,我们可以理解为 admin组的用户具有这两个create权限

Yii2  RBAC 用法入门 — 附代码-安全者

 

auth_assignment:权限(角色)和用户的关联表,item_name对应auth_item中的name,user_id对应user表的用户id

看下图,这里表示用户id为1和2的用户属于admin组

Yii2  RBAC 用法入门 — 附代码-安全者

auth_rule:规则表 我们这里没用到,将在以后的高级教程中讲解

验证权限

我这里用一个Branch控制器,里面有一个create方法。具体代码不用管。

只要把你的原有的代码改为如下形式的即可

这样就会在执行create方法的时候验证当前用户是否具有create-branch这个权限,代码都是我测试过的,我就不再上图了!

基本用法到此结束,在接下来的几天中我会接着讲解Yii2 RBAC的高级用法,敬请关注!
安全者原创文章,禁止转载!