用户角色及权限管理设计实例(基于RBAC模型)
文章目錄
- 1. 五張表模型
- 2. 需求分析
- 3. 數據庫設計
- 4. 用戶分組
- 5. 權限分類
- 6. 參考
1. 五張表模型
RBAC(Role-Based Access Control),基于角色的訪問控制。做權限控制系統最常見的方式就是基于此模型的。它的基本思想就是:把資源能否訪問、操作能否執行設定為權限;設定不同角色配對權限,使某種權限在某種角色下為被允許狀態;最后再根據現實的組織方式為每用戶分配角色。由此構建 5 個表:
| 名稱 | 用戶表 | 角色表 | 權限表 | 用戶角色關系表 | 角色權限關系表 |
| 表名 | sys_users | sys_roles | sys_perms | rel_user_role | rel_role_perm |
其中:
- 用戶和角色關系為多對多;
- 角色與權限關系也是多對多。
2. 需求分析
以電視劇《潛伏》為背景舉例,我們要為保密局天津站建設一個管理系統,這里就要理清相關人員的各種關系。
天津站的組織關系(用戶、角色、用戶角色關系)如下
- 一把手是站長吳敬中,下設兩個部門:機要室和行動隊。
- 機要室主任為余則成。
- 行動隊由隊長馬奎,還有兩個小嘍啰米志國、陳北伐組成。
- 此外,余則成還是站長的學生(心腹下屬)。
保密局的日常工作有這幾項(權限):
- 監聽電報。監聽截獲內外界各組織的電報;
- 打電話。給南京打電話,給站長太太打電話、給穆連成打電話,以及給繡春樓打電話;
- 派人跟穆晚秋談戀愛。從而榨取穆連成財寶;
- 幫站長收別人送的一輛小汽車。斯蒂龐克牌的。
很顯然,上邊這些任務不是人人能做(角色權限關系):
- 電話大家都能用;
- 電訊室的電報不能讓小嘍啰隨便聽;
- 跟穆晚秋談戀愛、代收小汽車都是幫站長斂財的私事,只能讓心腹余則成去做。
因此,以上關系可梳理為下圖所示
3. 數據庫設計
據上,理出用戶、角色、權限、用戶-角色、角色-權限的關系如下圖,這就是常見的權限5表。當然現實應用中的表不可能就這么兩三列,為了簡化繪圖這里只顯示了關鍵屬性,其他需要隨意添加哈。
對應的,構建數據庫表。
1. 用戶表(sys_users)
| 1 | 吳敬中 |
| 2 | 余則成 |
| 3 | 馬奎 |
| 4 | 米志國 |
| 5 | 陳北伐 |
2. 角色表(sys_roles)
| 1 | 站長 |
| 2 | 機要室主任 |
| 3 | 行動隊隊長 |
| 4 | 小嘍啰 |
| 5 | 站長心腹 |
3. 權限表(sys_perms)
| 1 | 監聽電報 |
| 2 | 打電話 |
| 3 | 和晚秋搞對象 |
| 4 | 代收斯蒂龐克 |
4. 用戶-角色表(rel_user_role)
| 1 | 1 | 1 | 吳敬中 -> 站長 |
| 2 | 2 | 2 | 余則成 -> 機要室主任 |
| 3 | 2 | 5 | 余則成 -> 站長心腹 |
| 4 | 3 | 3 | 馬奎 -> 行動處長 |
| 5 | 4 | 4 | 米志國 -> 小嘍啰 |
| 6 | 5 | 4 | 陳北伐 -> 小嘍啰 |
5. 角色-權限表(rel_role_perm)
| 1 | 1 | 1 | 站長 -> 監聽電報 |
| 2 | 1 | 2 | 站長 -> 打電話 |
| 3 | 2 | 1 | 機要室主任 -> 監聽電報 |
| 4 | 2 | 2 | 機要室主任 -> 打電話 |
| 5 | 3 | 1 | 行動處長 -> 監聽電報 |
| 6 | 3 | 2 | 行動處長 -> 打電話 |
| 7 | 4 | 2 | 小嘍啰 -> 打電話 |
| 8 | 5 | 3 | 站長心腹 -> 和晚秋談戀愛 |
| 9 | 5 | 4 | 站長心腹 -> 代收斯蒂龐克 |
4. 用戶分組
用戶數量大且可分組授權時,添加 3 個表。
- 用戶組
- 用戶-用戶組
- 用戶組-權限
米志國和陳北伐同屬 行動二科 的小嘍啰,他們具有相同權限,因此將上面數據庫設計的表結構更為
1. 用戶組表(sys_groups)
| 1 | 行動二科 |
2. 用戶-組表(rel_user_group)
| 1 | 4 | 1 | 米志國 -> 行動二科 |
| 2 | 5 | 1 | 陳北伐 -> 行動二科 |
3. 組-角色表(rel_group_role)
| 1 | 1 | 4 | 行動二科 -> 小嘍啰 |
5. 權限分類
基于 Web 的應用主要通過 URL 來實現對不同資源的控制,如查看頁面、訪問數據等。所以權限指的其實就是對 URL 的控制。一個角色有多少個權限就取決于他有多少個 URL 的訪問權限。
當然也可以將一個網站資源的權限進行再次劃分,分為菜單、導航欄、頁面元素和功能操作(根據需要,不一定非拆分)。
6. 參考
[1]. 用戶,用戶組,角色,權限
https://blog.csdn.net/qq_30519491/article/details/80941201
[2]. RBAC(基于角色的訪問控制權限的基本模型)
https://blog.csdn.net/weixin_41174072/article/details/83387223
[3]. RBAC權限管理系統
https://www.cnblogs.com/zenan/p/10576489.html
[4]. rbac 表結構的。設計
https://www.cnblogs.com/chengege/p/10695713.html
.
.
.
.
.
.
桃花仙人種桃樹,又摘桃花換酒錢_
總結
以上是生活随笔為你收集整理的用户角色及权限管理设计实例(基于RBAC模型)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android layout_gravi
- 下一篇: 基于SPI的OLED温湿度显示