在這裏我介紹一種快速簡單的方法來在 Yii2 高級模版中安裝 RBAC(Role Based Access Control) 系統php
安裝: Yii2 高級模板git
在這裏使用 composer
安裝 yii2 高級模板。假如你的機器中沒有 composer
請下載 它的最新版本。安裝完成請檢查可否在 CMD 中執行 composer
命令:github
C:\>composer
若是上述命令給出了正確的輸出,就能夠進行下面的操做了。web
打開一個 CMD 窗口並進入到服務的根目錄。我使用的是 wamp
服務,以下:數據庫
C:\>cd wamp\www C:\wamp\www>
而後使用命令 composer create-project --prefer-dist yiisoft/yii2-app-advanced yii2-app
來建立一個名稱爲 yii2-app
的新應用。數組
C:\wamp\www>composer create-project --prefer-dist yiisoft/yii2-app-advanced yii2-app
此模板也能夠從 github 下載。安裝完成後在 CMD 中進入新安裝的應用根目錄。yii2
C:\wamp\www>cd yii2-app C:\wamp\www\yii2-app>
接下來須要使用命令 php init
來初始化。初始化會生成應用的入口腳本和配置文件,命令以下:app
C:\wamp\www\yii2-app>php init
你能夠在給出的選項中選擇運行環境的類型:composer
Which environment do you want the application to be initialized in? [0] Development [1] Production Your choice [0-1, or "q" to quit]
如今安裝 yii2 高級模板已經完成,但尚未對應的數據庫。咱們須要建立一個數據庫。首先咱們先安裝一個 RBAC 模塊。這裏我使用了 yii2-admin
。步驟以下:yii
安裝: RBAC 系統
在 CMD 窗口中執行命令 composer require mdmsoft/yii2-admin "~2.0"
來安裝 yii2-admin
。
C:\wamp\www\yii2-app>composer require mdmsoft/yii2-admin "~2.0"
你能夠在 github 下載 yii2-admin
。安裝完成後,yii2-admin
被安裝在 yii2-app/vendor/mdmsoft
目錄。
下面須要在配置文件 yii2-app/common/config/main.php
中添加一些參數來配置 yii2-admin
和 authManager
:
'modules' => [ 'admin' => [ 'class' => 'mdm\admin\Module', ... ] ... ], ... 'components' => [ ... 'authManager' => [ 'class' => 'yii\rbac\PhpManager', // or use 'yii\rbac\DbManager' ] ],
建立一個 MySQL 數據庫並在配置文件 yii2-app/common/config/main-local.php
中添加數據庫信息。當前數據庫中沒有用戶表,須要建立一個用戶表。能夠使用 yii2 提供的數據庫遷移工具。執行命令 yii migrate --migrationPath=@mdm/admin/migrations
來建立一個用戶表。
C:\wamp\www\yii2-app>yii migrate --migrationPath=@mdm/admin/migrations
上面的命令會建立 user
和 menu
兩張表。
下面在配置文件 yii2-app/common/config/main.php
中修改用戶組件的屬性:
'components' => [ ... 'user' => [ 'identityClass' => 'mdm\admin\models\User', 'loginUrl' => ['admin/user/login'], ] ]
經過添加用戶來填充 user
表。使用此連接來註冊用戶
http://localhost/yii2-app/backend/web/index.php?r=admin/user/signup
你能夠使用類 'yii\rbac\DbManager'
來對數據庫中的用戶進行受權。首先須要執行一個數據庫遷移命令 yii migrate --migrationPath=@yii/rbac/migrations
。在配置文件 yii2-app/common/config/main.php
中添加 'class' => 'mdm\admin\models\User'
以下:
'components' => [ ... 'authManager' => [ 'class' => 'yii\rbac\DbManager', // or use 'yii\rbac\PhpManager' ], 'user' => [ 'class' => 'mdm\admin\models\User', 'identityClass' => 'mdm\admin\models\User', 'loginUrl' => ['admin/user/login'], ] ]
並在遷移完成後刪除配置文件中的 'class' => 'mdm\admin\models\User'
。遷移命令以下:
C:\wamp\www\yii2-app>yii migrate --migrationPath=@yii/rbac/migrations
不要忘了在配置文件 yii2-app/common/config/main.php
刪除 'class' => 'mdm\admin\models\User'
。
你能夠使用下面的 RBAC 連接建立和管理權限或角色:
http://localhost/yii2-app/backend/web/index.php?r=admin
http://localhost/yii2-app/backend/web/index.php?r=admin/route
http://localhost/yii2-app/backend/web/index.php?r=admin/permission
http://localhost/yii2-app/backend/web/index.php?r=admin/menu
http://localhost/yii2-app/backend/web/index.php?r=admin/role
http://localhost/yii2-app/backend/web/index.php?r=admin/assignment
http://localhost/yii2-app/backend/web/index.php?r=admin/user
你能夠建立和管理 routes/permissions/roles
並將它們分配給已有用戶。爲了驗證用戶是否有權限進行控制器中的指定的動做,須要在配置文件 yii2-app/common/config/main.php
中添加 access control
。
return [ 'modules' => [ .... ], .... 'as access' => [ 'class' => 'mdm\admin\components\AccessControl', 'allowActions' => [ 'site/*', 'admin/*', ] ] ]
你能夠在 allowActions
數組中添加公開的動做。其餘的侗族將會使用 AccessControl
類驗證。
關於 yii2-advanced
和 yii2-admin
的更多信息,請點擊:
https://github.com/yiisoft/yii2-app-advanced
https://github.com/mdmsoft/yii2-admin
但願此文對您有所幫助。
快樂的小碼農 :)
英文原文: Installation guide: Yii-2 advanced template with RBAC system