轉載自 xmlife 的博客 : http://blog.csdn.net/xmlife/article/details/50733451php
1.首先咱們要在配置文件的組件(component)裏面配置一下 Rbachtml
2.生成rbac默認數據表mysql
a.運行下面的命令生成權限數據表:web
yii migrate --migrationPath=@yii/rbac/migrations/
b.也能夠打開vendor\yiisoft\yii2\rbac\migrations\schema-MySQL.sql 拷貝里面的內容到數據庫運行生成數據表sql
3.添加角色和權限數據庫
a.建立權限yii2
b.建立角色app
以上兩條添加,會創auth_item表中建立兩條記錄,以表中的type類型做爲區分,type=1是角色,type=2爲權限yii
add方法會根據你傳入的對象屬性進行添加(添加角色和權限都是addItem,由於createPermission和createRole都建立了一個Item對象,只是對象中的type值不一樣)post
4.添加用戶、角色和權限之間的關係
a.將權限賦給角色
注意:上面建立的角色和權限對象,必須已經在數據庫中建立,好比items[‘role’] = test,不然會報錯
b.將角色賦給用戶
5.驗證權限
看下\Yii::$app->user->can()這個方法
=============================================================
思路解說:
首先,咱們約定以Controller/Action這樣的格式做爲有效的權限名稱,直接將權限賦給用戶,最後在can這個方法中作校驗。爲了避免破壞源碼,咱們能夠在ActiveRecord以前加一層基礎控制器BaseController,普通控制器繼承BaseController。
方案一
建立權限:
那麼咱們創建對應的權限數據(如何建立在RBAC第二篇中已經詳細講解)
權限post/detail:文章詳情頁的權限
權限賦給用戶:
將權限直接賦給用戶(此處用戶ID爲1)
檢測權限:
在基礎控制器中的beforeAction中驗證權限:
注意:
這個必需要加,否則會報錯,至於爲何就很少說了,簡稱一言難盡,V_V
方案二(代碼就不贅述了跟上面差很少)
權限賦給角色,角色賦給用戶
建立角色:
仍是以前的權限[post/detail],去掉權限和用戶關聯,添加權限和角色的上下級關聯
將角色賦給用戶
檢測權限
效果於上面保持一致