yii2的权限管理系统RBAC简单介绍

时间:2024-02-20 14:09:23

这里有几个概念

权限:

指用户是否可以执行哪些操作,如:编辑、发布、查看回帖

角色

比如: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做简单介绍。具体我们可以将这些功能丰富之后,写入后台。