1. 程式人生 > >Yii 2.0 搭建基於RBAC許可權的後臺管理系統 (二)

Yii 2.0 搭建基於RBAC許可權的後臺管理系統 (二)

三、RBAC整合AdminLTE後臺主題對選單進行控制

1.  配置APACHE虛擬主機

在 <XAMPP安裝路徑>\apache\conf\extra\httpd-vhosts.conf檔案末尾追加

<VirtualHost *:80>
    ServerName frontend.test
    DocumentRoot "project_path/advanced/frontend/web/"
    
    <Directory "project_path/advanced/frontend/web/">
        # use mod_rewrite for pretty URL support
        RewriteEngine on
        # If a directory or a file exists, use the request directly
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        # Otherwise forward the request to index.php
        RewriteRule . index.php


        # use index.php as index file


        DirectoryIndex index.php


        # ...other settings...
    </Directory>
</VirtualHost>


<VirtualHost *:80>
    ServerName backend.test
    DocumentRoot "project_path/advanced/backend/web/"
    
    <Directory "project_path/advanced/backend/web/">
        # use mod_rewrite for pretty URL support
        RewriteEngine on
        # If a directory or a file exists, use the request directly
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        # Otherwise forward the request to index.php
        RewriteRule . index.php


        # use index.php as index file
        DirectoryIndex index.php


        # ...other settings...
    </Directory>
</VirtualHost>

2. 配置本地HOST:

在C:\WINDOWS\System32\drivers\etc\HOSTS檔案裡追加

127.0.0.1   backend.test
127.0.0.1   frontend.test

3. 建立資料庫並配置資料庫連結

create database yii2_advanced default charset utf8;

修改本地配置檔案<專案根目錄>/common/config/main-local.php內容,這裡使用的mysql資料庫,配置如下:

'db' => [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=yii2_advanced',
    'username' => 'yii2_advanced_username',
    'password' => 'yii2_advanced_password',
    'charset' => 'utf8',
],

 

4. 配置yii2-admin執行環境

安裝yii2.0-admin

composer require mdmsoft/yii2-admin "~2.0"

因為僅將許可權控制應用於後臺backend模組,所以這裡將配置寫到<專案根目錄>/backend/config/main.php檔案裡,依次小心新增如下內容。

return [
    'modules' => [
        'admin' => [
            'class' => 'mdm\admin\Module',
        ]
    ],
    'components' => [
        'authManager' => [
            'class' => 'yii\rbac\DbManager', // 使用資料庫管理配置檔案
        ]
    ],
    'as access' => [
        'class' => 'mdm\admin\components\AccessControl',
        'allowActions' => [
            'site/*',//允許訪問的節點,可自行新增
            'admin/*',//允許所有人訪問admin節點及其子節點
        ]
    ],
];

建立資料庫表
建立使用者表和選單表
這裡通過命令列執行命令的方式,使用遷移檔案進行資料庫表的建立。

> 執行以下命令前請保證資料庫中不存在相關表。

php yii migrate [email protected]/admin/migrations


上面的命令會在資料庫建立user表和menu表。

建立RBAC相關表

建表語句存放在<專案根目錄>/vendor/yiisoft/yii2/rbac/migrations/schema-mysql.sql檔案中,在MySQL資料庫中執行分別得到auth_assignment、auth_item_child、auth_item、auth_rule四個表。



配置簡短路由

<專案根目錄>/backend/config/main.php檔案的compontents數組裡加上下面的配置:

"urlManager" => [
    "enablePrettyUrl" => true,
    "enableStrictParsing" => false,
    "showScriptName" => false,
    "suffix" => "",
    "rules" => [        
        "<controller:\w+>/<id:\d+>"=>"<controller>/view",  
        "<controller:\w+>/<action:\w+>"=>"<controller>/<action>"    
    ],
],

然後在 <專案根目錄>/backend/web下面建立.htaccess檔案並新增如下內容

Options +FollowSymLinks
IndexIgnore  */*
RewriteEngine on
RewriteCond  %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
Windows建立.htaccess檔案
cd  D:\Development\Environment\xampp\htdocs\advanced\backend\web
輸入copy con .htaccess 回車 (不會看到變化),然後再按ctrl+Z鍵,再回車,然後就建立了
通過訪問位址列http://backend.test/admin檢視效果,如下:

到這裡準備工作基本就緒,開始整合Yii的第三方資源外掛。

四、Yii2整合AdminLTE後臺主題

安裝AdminLTE

在專案根目錄(advanced)下執行    

composer require dmstr/yii2-adminlte-asset "2.*"


複製整個<專案根目錄>vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app目錄下的 layout 目錄和 site 目錄到backend/views,覆蓋原始檔案。

                           

成功後註冊一個新使用者:

進入http://frontend.test/點選右上角 Signup 註冊一個新使用者


註冊成功後,右上角會顯示登陸的狀態,在接下來的步驟中會用到這個註冊的使用者

現在我們訪問一下後臺管理地址

http://backend.test/


這樣基於Yii2.0的RBAC的許可權管理系統就搭建了一部分啦。下一篇RBAC許可權配置


相關推薦

no