转载自 xmlife 的博客 : http://blog.csdn.net/xmlife/article/details/50733451php
1.首先咱们要在配置文件的组件(component)里面配置一下 Rbachtml
2.生成rbac默认数据表mysql
a.运行下面的命令生成权限数据表:web
yii migrate --migrationPath=@yii/rbac/migrations/
b.也能够打开vendor\yiisoft\yii2\rbac\migrations\schema-MySQL.sql 拷贝里面的内容到数据库运行生成数据表sql
3.添加角色和权限数据库
a.建立权限yii2
b.建立角色app
以上两条添加,会创auth_item表中建立两条记录,以表中的type类型做为区分,type=1是角色,type=2为权限yii
add方法会根据你传入的对象属性进行添加(添加角色和权限都是addItem,由于createPermission和createRole都建立了一个Item对象,只是对象中的type值不一样)post
4.添加用户、角色和权限之间的关系
a.将权限赋给角色
注意:上面建立的角色和权限对象,必须已经在数据库中建立,好比items[‘role’] = test,不然会报错
b.将角色赋给用户
5.验证权限
看下\Yii::$app->user->can()这个方法
=============================================================
思路解说:
首先,咱们约定以Controller/Action这样的格式做为有效的权限名称,直接将权限赋给用户,最后在can这个方法中作校验。为了避免破坏源码,咱们能够在ActiveRecord以前加一层基础控制器BaseController,普通控制器继承BaseController。
方案一
建立权限:
那么咱们创建对应的权限数据(如何建立在RBAC第二篇中已经详细讲解)
权限post/detail:文章详情页的权限
权限赋给用户:
将权限直接赋给用户(此处用户ID为1)
检测权限:
在基础控制器中的beforeAction中验证权限:
注意:
这个必需要加,否则会报错,至于为何就很少说了,简称一言难尽,V_V
方案二(代码就不赘述了跟上面差很少)
权限赋给角色,角色赋给用户
建立角色:
仍是以前的权限[post/detail],去掉权限和用户关联,添加权限和角色的上下级关联
将角色赋给用户
检测权限
效果于上面保持一致