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 function
5、在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里面菜单才不会报错,不然菜单会报错。
不解啊。有大神指点吗?