1、前言yii2
上一篇文章咱們已經大體談過RBAC究竟是什麼和yii2底層RBAC接口的分析。架構
下面我深刻理解一下RBAC權限分配,深刻理解下yii2底層RBAC擴展,以及它是如何針對模塊化系統的開發的?yii
2、介紹模塊化
2.1 下面是張大體的思惟導圖:spa
由圖可見,咱們對yiiRABC底層接口的擴展邏輯。3d
2.2 下面是數據表具體流程圖:blog
咱們擴展了四個數據表格:auth_module、auth_role、auth_role_item、auth_role_child。接口
2.3下面是引入的數據表結構:ci
Id路由 primary key |
name(模塊、功能名稱) varchar(255) |
route(路由) varchar(255) |
pid smallint(6) |
create_at bigint |
update_at bigint |
status(是否已添加權限、角色) smallint(6) 1已添加 2未添加 |
1 |
營運管理 |
fake/one (僞路由) |
0 |
1555645646546 |
1555645646546 |
1 |
2 |
驗卡管理 |
check-card/index |
1 |
1555645646546 |
1555645646546 |
1 |
3 |
商品管理 |
shop/index |
1 |
1555645646546 |
1555645646546 |
1 |
4 |
驗卡 |
check-card/check |
2 |
1555645646546 |
1555645646546 |
1 |
5 |
驗卡 |
check-card/check-card-number |
2 |
1555645646546 |
1555645646546 |
2 |
id primary key |
user_id(用戶ID) bigint unique |
role_id(高級角色ID) bigint |
create_at bigint |
update_at bigint |
1 |
22 |
2 |
1555645646546 |
1555645646546 |
2 |
25 |
3 |
1555645646546 |
1555645646546 |
3 |
12 |
1 |
1555645646546 |
1555645646546 |
4 |
55 |
3 |
1555645646546 |
1555645646546 |
5 |
23 |
4 |
1555645646546 |
1555645646546 |
role_id(高級角色ID) bigint primary key 聯合主鍵 |
auth_item(低級角色) varchar(255) primary key聯合主鍵 |
create_at bigint |
update_at bigint |
1 |
營運管理 |
1555645646546 |
1555645646546 |
1 |
驗卡 |
1555645646546 |
1555645646546 |
1 |
公共管理 |
1555645646546 |
1555645646546 |
1 |
卡種管理 |
1555645646546 |
1555645646546 |
1 |
課種管理 |
1555645646546 |
1555645646546 |
Id primary key |
name(高級角色) varchar(255) |
company_id(公司ID) smallint(6) |
venue_id(場館ID) bigint |
update_at bigint |
create_at bigint |
derive_id(派生角色ID) bigint |
1 |
營運經理 |
1 |
[12,14,59] |
1555645646546 |
1555645646546 |
0 |
2 |
水吧員工 |
1 |
[12] |
1555645646546 |
1555645646546 |
1 |
3 |
CEO |
1 |
[12,14,16,19,20,28,49,55,54,58,53] |
1555645646546 |
1555645646546 |
0 |
4 |
團教經理 |
1 |
[12,14,59] |
1555645646546 |
1555645646546 |
0 |
5 |
吧檯員工 |
1 |
[12] |
1555645646546 |
1555645646546 |
1 |
模塊 =》 子模塊 =》 功能 ; 咱們動態的爲RBAC基礎表,添加權限和基礎角色, 模塊表中的name是auth_item中的基礎角色名稱。模塊中的路由,則是auth_item中權限的名稱。而後,基礎角色和權限創建關係。分配好模塊,添加過基礎角色和權限,並創建關係後,
下一步,咱們建立高級角色,給高級角色添加屬性,如:組織架構等。建立好高級角色後,咱們須要把低級角色綁定給咱們的高級角色。好了,一切都準備就緒,咱們就能夠把用戶綁定給咱們的高級角色。注意,上一篇RBAC中說到,在模塊化的系統中,因爲菜單、模塊、功能、以及頁面元素過多,致使的RBAC在分配用戶時,致使的基礎角色過多問題。咱們這裏作了一套獨有的解決方案,即:派生規則。咱們能夠拿到一個高級角色的權限,而後往下派生低級角色,基礎高級角色pid是0,這樣清晰明瞭了公司高層到基層的層級關係,
例如:總經理(高級角色);咱們能夠拿到它的權限,往下派生。總經理=》副經理=》負責人=》組長等等角色和權限。
3、尾語
好了,yii2的RBAC權限到這就結束了,小夥伴們有什麼建議和疑問能夠在下面評論留言,如需轉載請註明做者和來源,支持原創。