KilluaCHEN 2015-07-24 17:02:40 20429次浏览 14条评论 10 3 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使用!

觉得很赞
  • 评论于 2015-07-25 11:54 举报

    这样用中文做角色名 总觉得心里有些顾虑。

    1 条回复
    评论于 2015-07-25 12:10 回复

    这里不像"路径"那么敏感,用中文做角色名是没有任何问题的!

  • 评论于 2015-07-25 14:24 举报

    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],但是没效果,还不清楚是什么原因
    以上是使用反馈,希望楼主给予解决,本人菜鸟,有说错的地方多多包涵!

    1 条回复
    评论于 2021-10-02 01:52 回复

    好想yii对rbac升级啦,创建规则时提示未定义getDb(),我自己添加以后发现find()方法参数太少,求解决

    , , 觉得很赞
  • 评论于 2015-07-26 10:48 举报

    hello,我是用的环境时linux xampp,安装时未发现以上异常,等过几天家里win装好了,我安装试一下!
    弹窗无变化:确认一下 /vendor/johnitvn/yii2-ajaxcrud 目录存在。
    创建已有角色时,报错的情况,你可以参考一下 /rbac/rulecreate方法,里面是带验证的,或者等待后期更新

    1 条回复
    评论于 2015-07-27 10:10 回复

    楼上说的这个问题在Mac下也是存在的

  • 评论于 2015-07-27 08:53 举报

    1.前台后台如何授权
    2.角色继承如何树状显示
    3.权限继承如何树状显示
    4.如何针对组织机构进行授权
    5.如何通过rbac管理后台菜单
    6.增删改父节点时如何级联删改子节点

    1 条回复
    评论于 2015-07-28 14:25 回复

    好问题,关注ING

  • 评论于 2015-07-27 09:27 举报

    提的问题非常好,其中一些也是我比较关注的,这些问题rbac-plus还未完善,可以johnitvn等待后期更新,或者你有什么好的建议可以提出来,我们一起完善它!谢谢

    1 条回复
    评论于 2015-07-27 11:15 回复

    我是采用了zTree这个jq插件来进行树状管理

  • 评论于 2015-08-07 09:38 举报

    权限加进去了 ,但是怎么触发授权呢? 有结果的同志们 拿出来共享下吖

  • 评论于 2015-08-21 13:36 举报
    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'.
    
    2 条回复
    评论于 2015-08-21 13:37 回复

    这样的问题怎么解决,怎么配置这个gride,烦死人了,整了一上午,没有解决,求助

    评论于 2015-08-24 14:50 回复

    @zcj
    将以下配置项添加到你的配置文件中 common/config.php

    'modules' => [
       'rbac' =>  [
           'class' => 'johnitvn\rbacplus\Module'
       ],
       'gridview' =>  [
           'class' => '\kartik\grid\Module' // 此扩展使用于 kartik-v/yii2-grid ,故在此之前必须使用 gridview module
       ]       
    ]
    
  • 评论于 2015-09-29 11:25 举报

    貌似并没有“johnitvn”这个文件夹呀

  • 评论于 2015-10-22 15:31 举报

    Role 沒有 繼承 role 與 rule 的功能。
    只有 Permissions 可選,然後update 又不可用...
    需要 AuthItem.php 內的 $this->afterSave 註解取消才行.. 果斷放棄

  • 评论于 2015-10-26 15:45 举报

    弱弱的问一下,从功能上看,依靠auth_item,auth_item_child,和auth_assignment就能够实现分权...
    那auth_rule这表是干啥的0.0我注意看的时候,auth_item的rule_name字段有auth_rule的外键约束,但是允许为null

    这更加困惑要rule干啥,忘大神指点一二

  • 评论于 2015-11-08 20:36 举报

    在这张图选择权限后,点击save,发现更新数据不成功,数据库auth_item_child表没写入数据,这个是什么问题啊

  • 评论于 2015-11-12 00:45 举报

    不知道你得这个/rbac/rule中class如何填写啊,是干什么的?实在是不知道,求教,求解答

  • 评论于 2016-04-27 11:32 举报

    看的一团雾水

  • 评论于 2016-07-14 15:56 举报

    yii migrate --migrationPath=@yii/rbac/migrations/
    在执行这个的时候

    'authManager' => [
            'class' => 'yii\rbac\DbManager',
        ],
    

    必须放在common/config/main.php里面才不会报错

    安装完

    'authManager' => [
            'class' => 'yii\rbac\DbManager',
        ],
    

    必须放在frontend/config/main.php里面菜单才不会报错,不然菜单会报错。

    不解啊。有大神指点吗?

您需要登录后才可以评论。登录 | 立即注册