Yii2-admin是Yii2的rbac的一套管理工具,它可以和Yii2-adminlte完美搭配实现RBAC权限管理,省去了我们搭建基础后台时去写权限管理啦,只需要几个简单的配置就可以搭建一套权限管理。
Yii2-admin获取地址:https://github.com/mdmsoft/yii2-admin
一、安装方法
切换到网站的根目录执行:composer require mdmsoft/yii2-admin “~2.0” 然后耐心等待之后出现下方提示的绿色字体表明安装成功,并且给出了安装版本是yii2-admin(2.9),进入到 /vendor/mdmsoft/就可以看到yii2-admin目录。
- Installing mdmsoft/yii2-admin (2.9): Downloading (100%) Writing lock file Generating autoload files
二、配置
打开 backend/config/main.php文件
'modules' => [ //配置模块 'admin' => [ 'class' => 'mdm\admin\Module' ] ], "aliases" => [ //设置别名 "@mdm/admin" => "@vendor/mdmsoft/yii2-admin", ], 'as access' => [ //设置允许访问的action 'class' => 'mdm\admin\components\AccessControl', 'allowActions' => [ 'site/*', //site控制器下的所有action可以跳过yii2-admin的权限控制 'admin/*' //admin控制器下的所有action可以跳过yii2-admin的权限控制 ] ], components =>[ "authManager" => [ //权限 "class" => 'yii\rbac\DbManager', //将权限关系保存在数据库中 "defaultRoles" => ["guest"], ], ]
注意:authManager的组件有PhpManager和DbManager两种方式,PhpManager将权限关系保存到文件中,DbManager是将权限关系保存在数据库中。
到目前为止我们只要访问下方对应的链接就会看到权限管理的界面
http://localhost/index.php?r=admin http://localhost/index.php?r=admin/route http://localhost/index.php?r=admin/permission http://localhost/index.php?r=admin/menu http://localhost/index.php?r=admin/role http://localhost/index.php?r=admin/assignment http://localhost/index.php?r=admin/user
但是我们刚才说了,Yii2-admin是将权限关系保存到了数据库中,所以我们还需要创建对应的数据库才可以,如何创建数据库呢,请继续往下看。
[wppay]
三、创建数据库
命令切换到Yii2目录,执行下面的命令,将会自动创建需要的表(注意需要自行创建需要的数据库)
./yii migrate --migrationPath=@yii/rbac/migrations ./yii migrate --migrationPath=@mdm/admin/migrations
执行第一个命令时有可能出现报错如下:
Exception 'yii\base\InvalidConfigException' with message 'You should configure "authManager" component to use database before executing this migration.'
看到这个错误后,只需要在 /common/config/main.php中,加入如下代码即可(注意是common目录下)
'authManager' => [ 'class' => 'yii\rbac\DbManager', 'itemTable' => 'auth_item', 'assignmentTable' => 'auth_assignment', 'itemChildTable' => 'auth_item_child', 'ruleTable'=>'auth_rule', ],
若是你自己喜欢也可以自定义表名,方法如下
authManager' => [ 'class' =>'yii\rbac\DbManager', //auth_item (role permission) //auth_item_child (role->permission) ///auth_assignment (user->role) //auth_rule (rule) 'itemTable'=> '{{%auth_item}}',//可以自定义表名,不用默认的 'itemChildTable' => '{{%auth_item_child}}', 'assignmentTable' => '{{%auth_assignment}}', 'ruleTable'=> '{{%auth_rule}}', ]
再次执行./yii migrate –migrationPath=@yii/rbac/migrations 即可在数据库中创建对应的表。
执行 ./yii migrate/down –migrationPath=@yii/rbac/migrations 会删掉此次建立的表。
四、在adminLTE中增加左侧菜单
打开/backend/views/layouts/left.php,在item的数组中加入如下代码
[ 'label' => '权限管理', 'icon' => 'fa fa-circle-o', 'url' => 'javascript:;', 'items' => [ ['label' => '路由管理', 'icon' => 'fa fa-circle-o', 'url' => '/admin/route'], ['label' => '权限管理', 'icon' => 'fa fa-circle-o', 'url' => '/admin/permission'], ['label' => '角色管理', 'icon' => 'fa fa-circle-o', 'url' => '/admin/role'], ['label' => '用户与角色', 'icon' => 'fa fa-circle-o', 'url' => '/admin/assignment'], ['label' => '菜单管理', 'icon' => 'fa fa-circle-o', 'url' => '/admin/menu'], ], ],
刷新页面看看后台是不是已经出现啦,点一下是不是都是404呢,不要着急,那是因为我们没有做rewrite,具体怎么设置请看下一节。
[/wppay]