權限管理--常見模塊設計

1.基於 RBAC(Role-based Access Control)權限訪問控制

也就是說一個用戶可以有多個角色,一個角色可以有多個權限,通過將角色和權限分離開來提高設計的可擴展性,通常一個用戶有多個角色,一個角色也會屬於多個用戶(多對多),一個角色有多個權限,一個權限也會屬於多個角色(多對多)。

2.最簡單版本

假設:我們拿到一個用戶對象,

可以通過:用戶id –>角色id–>角色名稱(什麼角色)–>權限id –> 權限標識 –>獲取權限。最終獲取權限獲取角色信息。

這裏寫圖片描述

角色:可以簡單理解爲許多權限的集合。比如二級管理員,三級管理員。

3.用戶組模式

如果用戶數量比較龐大,可以加入用戶組模式。需要給用戶分組,每個用戶組內有多個用戶,可以給用戶授權外,也可以給用戶組授權。最終用戶擁有的所有權限 = 用戶個人擁有的權限+該用戶所在用戶組擁有的權限。(這個設計類似 svn 中的用戶權限,比如,將一個svn用戶加入到 group中,然後設置group的權限,以後加入更多的用戶,就不用再一一設置用戶的權限了。)

這裏寫圖片描述

4.權限分類

大部分是針對功能模塊,比如對信息記錄的增刪改(信息狀態修改,文件的刪除修改等),菜單的訪問,輸入框,按鈕的可見性,是否可以新增下級管理員等。有些權限設計,會把功能操作作爲一類,而把文件、菜單、頁面元素等作爲另一類,這樣構成“用戶-角色-權限-資源”的授權模型。而在做數據表建模時,可把功能操作和資源統一管理,也就是都直接與權限表進行關聯,這樣可能更具便捷性和易擴展性。

這裏寫圖片描述

5.完整版

請留意權限表中有一列“權限類型”,我們根據它的取值來區分是哪一類權限,如“MENU”表示菜單的訪問權限、“OPERATION”表示功能模塊的操作權限、“FILE”表示文件的修改權限、“ELEMENT”表示頁面元素的可見性控制等。

優點:

  • 不需要區分哪些是權限操作,哪些是資源,(實際上,有時候也不好區分,如菜單,把它理解爲資源呢還是功能模塊權限呢?)。
  • 方便擴展,當系統要對新的東西進行權限控制時,我只需要建立一個新的關聯表“權限XX關聯表”,並確定這類權限的權限類型字符串。

這裏要注意的是,權限表與權限菜單關聯表、權限菜單關聯表與菜單表都是一對一的關係。(文件、頁面權限點、功能操作等同理)。也就是每添加一個菜單,就得同時往這三個表中各插入一條記錄。這樣,可以不需要權限菜單關聯表,讓權限表與菜單表直接關聯,此時,須在權限表中新增一列用來保存菜單的ID,權限表通過“權限類型”和這個ID來區分是種類型下的哪條記錄。

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章