Yii2-RBAC-Plus 安装篇 [ 2.0 版本 ]
前言
1.本教程适合有RBAC基础,对RBAC有一定了解的同学.
2.本教程使用advanced模板
3.确保数据库中存在user表,没有的同学请查阅文档 运行 php yii migrate 来生成user表
安装
1首先使用composer把扩展源码更新到项目中,github地址:yii2-rbac-plus
2.将以下配置项添加到你的配置文件中
'components' => [
'authManager' => [
'class' => 'yii\rbac\DbManager',
],
],
'modules' => [
'rbac' => [
'class' => 'johnitvn\rbacplus\Module'
]
]
3.运行php yii migrate/up --migrationPath=@yii/rbac/migrations生成rbac表结构
到了这里,我们已经可以在浏览器中运行以下route
/rbac/rule
/rbac/permission
/rbac/role
/rbac/assignment
迁移
为了方便管理!我们还需要把/vendor/johnitvn/yii2-rbac-plus/src下的源码文件都移动到应用目录下,如backend/modules/rbac,因为我们不能总到源文件下工作
1.移动文件
2.修改 /vendor/yiisoft/extensions.php 中的 johnitvn/yii2-rbac-plus ,把alias修改为['@johnitvn/rbacplus' => '@backend/modules/rbac']
这时候我们在运行上面的route,浏览器依旧可以正常的工作(确保/vendor/johnitvn/yii2-rbac-plus已被删除)
后面给大家介绍一下RBAC中的Rule使用!
KilluaCHEN 上海
注册时间:2015-01-09
最后登录:2019-12-30
在线时长:20小时56分
最后登录:2019-12-30
在线时长:20小时56分
- 粉丝16
- 金钱994
- 威望65
- 积分1844
共 14 条评论
这样用中文做角色名 总觉得心里有些顾虑。
这里不像"路径"那么敏感,用中文做角色名是没有任何问题的!
windows wamp安装使用发现以下问题:
1、进入rbac/role出现“Static function johnitvn\rbacplus\models\AuthItem::find() should not be abstract”
解决方式:将johnitvn\rbacplus\models\下AuthItem.php 86行
public abstract static function find($name);改为public static function find($name){}2、进入rbac/role/create出现“Declaration of johnitvn\rbacplus\models\Role::afterSave() should be compatible with johnitvn\rbacplus\models\AuthItem::afterSave()”
解决方式:将johnitvn\rbacplus\models\下AuthItem.php 140行
public function afterSave() {的括号里加一个参数,如:public function afterSave($insert) {3、在rbac/role/create时若角色已存在且不添加权限会出现"in_array() expects parameter 2 to be array, string given"
解决方式:将将johnitvn\rbacplus\views\role下_form.php 40行
in_array($permission->name,$model->permissions)修改为in_array($permission->name, !is_array($model->permissions) ? array():$model->permissions)4、在rbac/role/create时若角色不存在且不添加权限会进入rbac/role/view页面此时会出现"Non-static method johnitvn\rbacplus\models\Role::getPermistions() should not be called statically, assuming $this from incompatible context"
解决方式:将johnitvn\rbacplus\models\下Role.php 64行
public function改为pubic static function5、在rbac/role或rbac/permission页面删除的时候,弹窗出来不论点确认还是取消,弹窗无变化且数据没删除
解决方式:不知是否是浏览器还是其他什么原因,未解决
6、建议:建议采用ajax来验证角色或权限的唯一性
ps: 添加了
['enableAjaxValidation'=>true],但是没效果,还不清楚是什么原因以上是使用反馈,希望楼主给予解决,本人菜鸟,有说错的地方多多包涵!
好想yii对rbac升级啦,创建规则时提示未定义getDb(),我自己添加以后发现find()方法参数太少,求解决
hello,我是用的环境时
linux xampp,安装时未发现以上异常,等过几天家里win装好了,我安装试一下!弹窗无变化:确认一下
/vendor/johnitvn/yii2-ajaxcrud目录存在。创建已有角色时,报错的情况,你可以参考一下
/rbac/rule的create方法,里面是带验证的,或者等待后期更新楼上说的这个问题在Mac下也是存在的
1.前台后台如何授权
2.角色继承如何树状显示
3.权限继承如何树状显示
4.如何针对组织机构进行授权
5.如何通过rbac管理后台菜单
6.增删改父节点时如何级联删改子节点
好问题,关注ING
@qq3737002 提的问题非常好,其中一些也是我比较关注的,这些问题
rbac-plus还未完善,可以johnitvn等待后期更新,或者你有什么好的建议可以提出来,我们一起完善它!谢谢我是采用了zTree这个jq插件来进行树状管理
权限加进去了 ,但是怎么触发授权呢? 有结果的同志们 拿出来共享下吖
Invalid Configuration – yii\base\InvalidConfigException The 'gridview' module MUST be setup in your Yii configuration file and must be an instance of 'kartik\grid\Module'.这样的问题怎么解决,怎么配置这个gride,烦死人了,整了一上午,没有解决,求助
@zcj
将以下配置项添加到你的配置文件中 common/config.php
'modules' => [ 'rbac' => [ 'class' => 'johnitvn\rbacplus\Module' ], 'gridview' => [ 'class' => '\kartik\grid\Module' // 此扩展使用于 kartik-v/yii2-grid ,故在此之前必须使用 gridview module ] ]貌似并没有“johnitvn”这个文件夹呀
Role 沒有 繼承 role 與 rule 的功能。
只有 Permissions 可選,然後update 又不可用...
需要 AuthItem.php 內的 $this->afterSave 註解取消才行.. 果斷放棄
弱弱的问一下,从功能上看,依靠auth_item,auth_item_child,和auth_assignment就能够实现分权...
那auth_rule这表是干啥的0.0我注意看的时候,auth_item的rule_name字段有auth_rule的外键约束,但是允许为null
这更加困惑要rule干啥,忘大神指点一二
在这张图选择权限后,点击save,发现更新数据不成功,数据库auth_item_child表没写入数据,这个是什么问题啊
不知道你得这个/rbac/rule中class如何填写啊,是干什么的?实在是不知道,求教,求解答
看的一团雾水
yii migrate --migrationPath=@yii/rbac/migrations/在执行这个的时候
'authManager' => [ 'class' => 'yii\rbac\DbManager', ],必须放在common/config/main.php里面才不会报错
安装完
'authManager' => [ 'class' => 'yii\rbac\DbManager', ],必须放在frontend/config/main.php里面菜单才不会报错,不然菜单会报错。
不解啊。有大神指点吗?