这里有几个概念
权限:
指用户是否可以执行哪些操作,如:编辑、发布、查看回帖
角色
比如:VIP用户组, 高级会员组,中级会员组,初级会员组
VIP用户组:发帖、回帖、删帖、浏览权限
高级会员组:发帖、回帖、浏览权限
中级会员组:回帖、浏览权限
初级会员组:浏览
在Yii2.0中
- yii\rbac: Item 为角色或者权限的基类,其中用字段type来标识。1代表角色,2代表权限
- yii\rbac: Role 为代表角色的类
- yii\rbac: Permission 为代表权限的类
- yii\rbac: Assignment 为代表用户角色或者权限的类
- yii\rbac: Rule 为代表角色或权限能否执行的判定规则表
auth_item 存储权限和角色,如下图所示:
auth_item_child 表是权限和角色从属关系,如下图所示:
大概了解上面的概念后,我们具体看具体怎么实现的。
1、在config中console.php配置RBAC组件,如下图
PS:
有的文章写的是PhpManageer,如果是这样的话,在运行会报错。
然后运行
yii migrate --migrationPath=@yii/rbac/migrations/
成功执行,产生权限表。
2、首先要在web.php配置下RBAC的组件。
添加authManager组件,下面的xxxTable可以不用添加,默认就是这样的。
这时候,我们刷新下前台页面,正常。这就说明配置方面没有问题。
这时候,我们来看下如何创建角色、权限、角色与权限方面的问题
我们随便创建个Controller,这里我用IndexController,只要能访问到这个Controller就行,无所谓哪个控制器。
1、如何创建权限
然后访问
http://yii.local.com:8090/index.php?r=admin/index/create-permission&item=index
必须带参数,$item就是你要创建的权限。如:post-发帖,edit-编辑,update-更新,view-浏览,index-查看首页等等
2、创建角色
同样的道理,访问
http://yii.local.com:8090/index.php?r=admin/index/create-role&item=vip_user
这时候,我们创建了个vip_user用户组。
3、如何将某角色拥有某权限OR如何将某权限纳入进某角色
$item1 是角色,$item2 是权限
http://yii.local.com:8090/index.php?r=admin/index/create-empowerment&item1=vip_user&item2=edit
将edit权限放进vip_user角色,即vip_user用户组有edit权限
4、如何将某用户加入某角色(用户组)中
浏览器访问
http://yii.local.com:8090/index.php?r=admin/index/create-assign&item1=post&item2=1
意思是将uid=1的用户赋予发帖的权限
http://yii.local.com:8090/index.php?r=admin/index/create-assign&item1=vip_user&item2=1
意思是将uid=1的用户赋予vip_user用户组的权限
这里说明下,某用户可以属于某个用户组即角色,也可以具有某个权限。
如果某操作不在auth_item_child表的child中,将会
以上只是对RBAC做简单介绍。具体我们可以将这些功能丰富之后,写入后台。