開發之前有必要先來分析一下資料表:
首先主體,也就是使用者,需要有一張使用者表,很簡單,我們已經有了,就是資料表user_backend
我們需要有一張角色表和許可權表,分別存放角色和許可權的資料表
另外我們還需要一張主體跟角色的關聯表,也就是需要給使用者分配角色的儲存表
最後我們再需要一張角色跟許可權的關聯表
也就是說,如果現在讓我們自己從零開始實現一套基於角色的訪問控制,我們總結了上面4小條。開始之前很多人會覺得很難,無從下手,現在感覺呢,是不是思路清晰了好多?開始本篇主題之前有必要再叨嘮兩句。有些同學學蒙了,為啥這個時候說這些有的沒的呢,不是要學實戰嗎?其實我們現在步步都在實戰,網上你也找不到這麼好的教程!我們現在就是在為後面的課程做一些鋪墊,因為很多人後面構建好了rbac,但是卻不明白其前因後果!所以,這裡基礎的理解很重要!
言歸正傳。官方自帶的rbac在哪呢?在 vendor\yiisoft\yii2\rbac 目錄下。
還記得我們之前講的migrate的用法嗎?接下來我們又要用到migrate生成官方自帶的資料表了。(部分同學直接拷貝sql執行,但是sql本身未設定utf8模式,導致後面亂碼,此處我們統一使用migrate進行操作)
在vendor同級目錄,也就是我們專案的頂級目錄下執行
./yii migrate --migrationpath=@yii/rbac/migrations/
然後輸入yes..然後報錯了,報錯不可怕,可怕的是看到錯誤的人躲著錯誤問這問那!我們看看具體什麼錯
exception 'yii\base\invalidconfigexception' with message 'you should configure "authmanager"
component
touse database before executing this migration.'
提示我們說在執行這條migration之前讓我們先配置下authmanager元件!也就是說我們尚未配置某些操作,那我們就配置下authmanager元件唄
開啟common\config\main.php檔案,在components陣列中加入authmanager元件
//authmanager有phpmanager和dbmanager兩種方式,
//phpmanager將許可權關係儲存在檔案裡,這裡使用的是dbmanager方式,將許可權關係儲存在資料庫.
"authmanager" => [
"class" => 'yii\rbac\dbmanager',
],
然後我們再次執行上面的migrate命令,控制台提示我們成功建立了4張資料表,我們開啟資料庫看了下,果真如此。
資料表我們是一股腦的建立完了,但是每個資料表具體什麼含義呢?是否真的就如我們一開始所分析的呢?
auth_item:用於儲存角色、許可權和路由
auth_item_child:角色-許可權的關聯表
auth_assignment:使用者-角色的關聯表
大致上跟我們所分析的差不多,只不過關於角色、許可權這裡共用了一張資料表,統稱為授權專案。
說明一下:上面說的路由,實質就是我們許可權所控制的最小粒度範圍。那為什麼要寫角色、許可權和路由呢?角色,可以理解為可為其分配的是角色更大級別的,許可權,可以理解為角色的濃縮版,實質就是乙個角色,只不過關聯的是最小粒度-路由。
需要提醒的是:4張資料表的表名分別對應著authmanager元件類yii\rbac\dbmanager的4個屬性,也就是說如果我們在authmanager中配置了不同的屬性值,生成的資料表名也會隨之改動,可自行嘗試!
下一章節,我們利用剛剛配置的authmanager元件,直接手把手帶你飛,手動敲出乙個簡單強大的許可權管理,讓rbac變的so easy,期待吧!
yii資料表關聯操作
首先在model中進行表關聯 public function relations 在增加和修改的頁面用下面的 來表示 textfield model s addon telephone array name hactiveform name model,addon telephone pattern...
wordpress資料表分析
wordpress一共是有12個表的 wp commentmeta wp comments wp links wp options wp postmeta wp posts wp term relationships wp term taxonomy wp termmeta wp terms wp ...
分析WordPress資料表之分類標籤表 功能篇
表字段如下 term id 分類或標籤id name 分類或標籤名 slug 別名 term group 分類標籤組,我想應該是用於排序分組 表字段如下 meta id 元資料自增id term id 分類標籤id meta key 元資料鍵 meta value 元資料值 表字段如下 term t...