<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## Yii2中使用yii2-admin搭建RBAC權限控制 [TOC] ### 安裝yii2 首先安裝好**advanced**高級版的Yii2。 ### 配置數據庫連接 創建`yii2_advanced`數據庫,并授權用戶。 ```sql create database yii2_advanced default charset utf8; grant all on yii2_advanced.* to yii2_advanced@localhost identified by 'my_yii2_advanced_password'; ``` 修改本地配置文件`<project>/common/config/main-local.php`內容,這里使用的mysql數據庫,配置如下: ```php 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=yii2_advanced', 'username' => 'yii2_advanced', 'password' => 'my_yii2_advanced_password', 'charset' => 'utf8', ], ``` ### 創建后臺用戶數據表 #### 修改遷移文件 修改數據遷移文件`<project>/console/migrations/m130524_201442_init.php`,內容如下: ```php public function up() { $tableOptions = null; if ($this->db->driverName === 'mysql') { // http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB'; } $this->createTable('{{%user}}', [ 'id' => $this->primaryKey()->comment('自增ID'), 'username' => $this->string()->notNull()->unique()->comment('用戶名'), 'auth_key' => $this->string(32)->notNull()->comment('自動登陸key'), 'password_hash' => $this->string()->notNull()->comment('加密密碼'), 'password_reset_token' => $this->string()->unique()->comment('重置密碼token'), 'email' => $this->string()->notNull()->unique()->comment('郵箱'), 'role'=>$this->smallInteger()->notNull()->defaultValue(10)->comment('角色等級'), 'status' => $this->smallInteger()->notNull()->defaultValue(10)->comment('用戶狀態'), 'created_at' => $this->integer()->notNull()->comment('創建時間'), 'updated_at' => $this->integer()->notNull()->comment('更新時間'), ], $tableOptions); } ``` #### 執行數據庫遷移 ```shell php yii migrate ``` ![](https://box.kancloud.cn/63b1f960b355016ce407db261747084b_554x405.png) 這時如果正確執行可以看到類似上面的結果,并且可以使用客戶端連接工具連接到數據庫去查看遷移的效果。 #### 訪問前臺frontend模塊注冊用戶 ![](https://box.kancloud.cn/d4dfeba12af0ca610d68c0ca2695e12a_394x52.png) 注冊成功后,右上角會顯示登陸的狀態,在接下來的步驟中會用到這個注冊的用戶 ![](https://box.kancloud.cn/0bf9acf985225d6379a2d44f7f9a7bfa_459x52.png) ### 利用AdminLTE渲染后臺模板 后臺的模板這里采用[?AdminLTE](https://packagist.org/packages/dmstr/yii2-adminlte-asset#2.3.0)(Backend theme for Yii2 Framework) #### 安裝AdminLTE 可以參考[GitHub地址](https://github.com/dmstr/yii2-adminlte-asset),也可以參考之前寫的一個[總結地址](http://blog.webfsd.com/article-214.html)進行安裝。 #### yii2配置整合AdminLTE   建議拷貝`<project>/vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app`目錄下的`layouts`和`site`目錄拷貝并覆蓋掉`<project>/backend/views/`目錄下的`lauouts`和`site`對應的文件。   訪問后臺地址得到如下效果: ![](https://box.kancloud.cn/9b06bc704a0bc8497ee14b0c38743d39_1527x733.png) ### RBAC實現后臺的權限控制 #### 配置簡短路由 `<project>/backend/config/main.php`文件的`compontents`數組里加上下面的配置: ```php "urlManager" => [ "enablePrettyUrl" => true, "enableStrictParsing" => false, "showScriptName" => false, "suffix" => "", "rules" => [ "<controller:\w+>/<id:\d+>"=>"<controller>/view", "<controller:\w+>/<action:\w+>"=>"<controller>/<action>" ], ], ``` 然后在項目的根目錄 `<project>/backend/web`下面創建`.htaccess`文件并添加如下內容 ``` Options +FollowSymLinks IndexIgnore */* RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php ``` > Apache服務器必須開啟**rewrite_model**模塊 訪問gii模塊測試下,如下: ![](https://box.kancloud.cn/c6337105a4cdc38d5bdef917dc629fa6_1532x754.png) #### 創建RBAC相關表 建表語句存放在`<project>/vendor/yiisoft/yii2/rbac/migrations/schema-mysql.sql`文件中,在MySQL數據庫中執行分別得到`auth_assignment` `auth_item_child` `auth_item`和`auth_rule`四個表。 另外我們需要創建一個后臺菜單表。 ```sql CREATE TABLE `menu` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(128) NOT NULL, `parent` int(11) DEFAULT NULL, `route` varchar(256) DEFAULT NULL, `order` int(11) DEFAULT NULL, `data` text, PRIMARY KEY (`id`), KEY `parent` (`parent`), CONSTRAINT `menu_ibfk_1` FOREIGN KEY (`parent`) REFERENCES `menu` (`id`) ON DELETE SET NULL ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` 以上建表語句也可以使用`migration`進行遷移版本控制。 ### 下載并安裝 yii2-admin 安裝步驟參見[GitHub地址](https://github.com/mdmsoft/yii2-admin) #### 權限相關配置 修改`<project>/backend/config/main.php`中的內容: ```php "modules" => [ "admin" => [ "class" => "mdm\admin\Module", ], ], "aliases" => [ "@mdm/admin" => "@vendor/mdmsoft/yii2-admin", ], //這里必須添加authManager配置項 "components" => [ "authManager" => [ "class" => 'yii\rbac\DbManager', "defaultRoles" => ["guest"], ], ], 'as access' => [ 'class' => 'mdm\admin\components\AccessControl', 'allowActions' => ['*'], // 后面對權限完善了以后,記得把*改回來! ] ``` [TOC] #### 修改左側菜單 模板文件在`<project>/backend/views/layouts/left.php`,在`items`數組中加入如下代碼: ```php [ 'label' => '權限管理', 'icon' => 'fa fa-circle-o', 'url' => 'javascript:;', 'items' => [ ['label' => '路由管理', 'icon' => 'fa fa-circle-o', 'url' => '/admin/route'], ['label' => '權限管理', 'icon' => 'fa fa-circle-o', 'url' => '/admin/permission'], ['label' => '角色管理', 'icon' => 'fa fa-circle-o', 'url' => '/admin/role'], ['label' => '用戶與角色', 'icon' => 'fa fa-circle-o', 'url' => '/admin/assignment'], ['label' => '菜單管理', 'icon' => 'fa fa-circle-o', 'url' => '/admin/menu'], ], ], ``` ![](https://box.kancloud.cn/b0ff6ea61e1c07b0fadf02a48d773ddd_1538x634.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看