1. 程式人生 > >Yii2.0-advanced-3—為yii2新增後臺模板adminlte和許可權元件yii2-admin

Yii2.0-advanced-3—為yii2新增後臺模板adminlte和許可權元件yii2-admin

一、yii2-adminlte-asset

adminlte一款基於bootstrap的響應模組。yii2-adminlte-asset更是一款基於yii2框架進行開發的後臺主題模版。

1、安裝(安裝前先執行composer self-update)


composer require dmstr/yii2-adminlte-asset "2.*"
等待幾分鐘完成後,拷貝 vendor\dmstr\yii2-adminlte-asset\example-views\yiisoft\yii2-app 目錄下面的檔案到專案 backend\views, 可直接進行覆蓋替換;
開啟訪問後臺主頁和登入頁:


2、開啟 backend\views\layouts\main.php,找到body將其class修改如下,可以改變不同的顏色主題:


"skin-blue",
"skin-black",
"skin-red",
"skin-yellow",
"skin-purple",
"skin-green",
"skin-blue-light",
"skin-black-light",
"skin-red-light",
"skin-yellow-light",
"skin-purple-light",
"skin-green-light"


二、yii2-admin許可權元件

yii2-admin是一個基於yii2的許可權管理元件,使用它可以快速搭建視覺化的許可權管理功能;
1、首先建立yii2的rbac資料表,資料庫遷移檔案在vendor\yiisoft\yii2\rbac 目錄下,


yii migrate [email protected]/rbac/migrations/
輸入會會報錯提示我們要新增許可權元件配置:

Exception 'yii\base\InvalidConfigException' with message 'You should configure "authManager" component
開啟 common\config\main.php 檔案,在 components 陣列中加入 authManager 元件


//authManager有PhpManager和DbManager兩種方式,    
//PhpManager將許可權關係儲存在檔案裡,這裡使用的是DbManager方式,將許可權關係儲存在資料庫.    
"authManager" => [        
    "class" => 'yii\rbac\DbManager',
],
再次執行遷移就可以了,建立的表含義:

auth_item:用於儲存角色、許可權和路由;  auth_item_child:角色-許可權的關聯表;  auth_assignment:使用者-角色的關聯表

2、安裝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 無許可權訪問,為了開發方便,暫時我們先設定所有都可訪問,
'allowActions' => [
            //這裡是允許訪問的action,不受許可權控制
            //controller/action
            '*'
        ]
下面可以通過瀏覽器訪問如下地址:
/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-admin的許可權管理介面了,但是這麼訪問太麻煩,我們可以做一個導航管理,讓有許可權的路由都顯示在左側選單;
3、menu選單實現

首先建立一個menu表,這個表在yii2中已經為我們準備好了,直接資料遷移:

yii migrate/to m140602_111327_create_menu_table.php  [email protected]/admin/migrations

# m140602_111327_create_menu_table.php 是我們要執行的menu資料表,
# 在vendor\mdmsoft\yii2-admin\migrations目錄下,這個每個人可能是不同的,需要自己手動修改
訪問 /admin/menu 可以看到選單管理介面;然後開啟佈局檔案left.php,修改相應配置,

<?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>
這樣就可以通過在介面操作實現左側導航管理;
4、menu選單使用方法

/admin/menu/index    #這裡新增導航選單,之前先訪問 /admin/menu/index將所有路由新增到表中,否則無法設定路由連結

例如:新增一個‘’角色管理‘’ 選單,路由為 “/admin/role”

5、rbac許可權使用方法

//路由設定

/admin/route/index     #訪問將左側所有路由新增到右側,即寫入路由資料,這裡的路由是根據php反射機制自動顯示,也可手動增加路由

//許可權設定

/admin/permission/index     #新增一個許可權,分配給一個路由,例如:“ 全域性許可權 ”,右側加入 “ /* ”;


//角色設定

/admin/role/index     #新增一個角色,分配給該角色一個許可權,例如:“ 超級管理員 ”,右側加入上一步設定的 “ 全域性許可權 ”;
//角色分配

/admin     #分配給使用者角色,這裡會顯示user表中所有使用者,例如:“ admin ”,右側加入上一步設定的角色 “ 超級管理員 ”;
6、完善配置

之前為了使用方便我們將  /backend/config/main.php,allowActions 設定為 *,現在改為正確設定:


'as access' => [
        'class' => 'mdm\admin\components\AccessControl',
        'allowActions' => [
            //這裡是允許訪問的action,不受許可權控制
            //controller/action
            'site/*',
        ]
    ],
未在後臺授權的使用者訪問相關路由都會顯示403;

--------------------- 
作者:一夜長風 
來源:CSDN 
原文:https://blog.csdn.net/wlzx120/article/details/53423032 
版權宣告:本文為博主原創文章,轉載請附上博文連結!