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.phpWindows建立.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許可權配置。