yii2高级模板借助于yii2-admin&yii2-adminlte-asset的RBAC权限管理

一、确保composer正确安装及配置,参考以下命令:
执行composer self-update.确保你的composer是最新的
更新国内源

二、使用composer进行安装
安装最新的Composer Asset Plugin:composer global require "fxp/composer-asset-plugin:^1.3.1"
安装最新的advanced版本:composer create-project yiisoft/yii2-app-advanced advanced 2.0.12
三、项目初始化
命令行下切换至项目根目录,执行init命令。
回车后这里会让我们选择开发环境 0开发环境 1生产环境 这里我们选择0 开发环境,输入后回车,会让我们输入yes或者no进行确认,输入yes确认即可 
此时,通过浏览器或者命令行输入yii命令可看到欢迎界面。
四、使用数据迁移命令,初始化RBAC数据库
打开 common\config\main.php 文件,在 components 数组中加入 authManager 组件,注意authManager的配置不要写错哦。
//authManager有PhpManager和DbManager两种方式,    
//PhpManager将权限关系保存在文件里,这里使用的是DbManager方式,将权限关系保存在数据库.    
"authManager" => [        
   "class" => 'yii\rbac\DbManager',
],
yii migrate --migrationPath=@yii/rbac/migrations/
五、安装yii2-admin
composer require mdmsoft/yii2-admin "~2.0"
安装好了之后,我们打开 backend\config\main.php,配置如下
return [
   //......
   'modules' => [
'admin' => [        
   'class' => 'mdm\admin\Module',   
],
//......
   ],
   'aliases' => [    
'@mdm/admin' => '@vendor/mdmsoft/yii2-admin',
   ],
   'components' => [
//......
'authManager' => [        
   'class' => 'yii\rbac\DbManager',
   'defaultRoles' => ['guest'],    
],
//......
   ],
   'as access' => [
'class' => 'mdm\admin\components\AccessControl',
'allowActions' => [
   //这里是允许访问的action,不受权限控制
   //controller/action
   //'*'
]
   ],
   //......
];
以上配置完毕之后你会发现,所有后台控制器无法访问,报403没有权限错误。需要暂时取消47行的注释同意所有控制器的访问。
可以通过下列url验证安装是否成功
/index.php?r=admin
/index.php?r=admin/route
/index.php?r=admin/permission
/index.php?r=admin/role
/index.php?r=admin/assignment
六、安装yii2-adminlte-asset
composer require dmstr/yii2-adminlte-asset "2.*"
拷贝 vendor\dmstr\yii2-adminlte-asset\example-views\yiisoft\yii2-app 目录下面的文件到项目 backend\views, 可直接进行覆盖替换
七、使用数据库迁移工具,生成menu表
yii migrate/to m140602_111327_create_menu_table.php  --migrationPath=@mdm/admin/migrations
通过 /index.php?r=admin/menu 访问菜单创建
八、修改布局文件,使用菜单组件
打开布局文件left.php,文件内的Html代码替换为下面的代码,代码的含义是借助yii2以及yii2-admin封装好的菜单组件,显示用户有权限的菜单。注意哦,如果用户对某操作有权限,但是你没为该权限添加菜单,这是不会显示在左侧,但是用户通过路由地址照样可以正常访问的,毕竟我们左侧管理的是菜单表!
<?php
use mdm\admin\components\MenuHelper;
use dmstr\widgets\Menu;
?>


<aside class="main-sidebar">
   <section class="sidebar">
<?=
   Menu::widget([
'options' => ['class' => 'sidebar-menu'],
'items' => MenuHelper::getAssignedMenu(Yii::$app->user->id)
   ]);
?>
   </section>
</aside>

注意:此时访问后台见不到菜单的原因是,当前后台登陆用户没有菜单创建权限。可以通过以下代码创建控制器并访问。
<?php
namespace backend\controllers;
use Yii;
use yii\web\Controller;
class RbacController extends Controller
{
   public function actionInit ()
   {
// 这个是我们上节课添加的authManager组件,组件的调用方式没忘吧?
$auth = Yii::$app->authManager;
// 添加 "/*" 权限
$index = $auth->createPermission('/*');
$index->description = '超级管理员';
$auth->add($index);
// 创建一个角色 '超级管理员',并为该角色分配"/*"权限
$manage = $auth->createRole('超级管理员');
$auth->add($manage);
$auth->addChild($manage, $index);
// 为用户 admin(该用户的uid=1) 分配角色 "超级管理员" 权限
$auth->assign($manage, 1); // 1是admin用户的uid
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值