關于系統后臺的用戶權限設計與思考
合理的后臺權限設計體系將有助于協助用戶處理更多事務,提升用戶的操作效率,也降低風險發生的可能性。那么,你了解權限設計中的界面設計需要注意哪些事項嗎嗎?本篇文章里,作者從將為我們解答,一起來看一下。
在設計系統權限模塊時,需要考慮兩個方面:功能權限和數據權限。功能權限與菜單以及菜單頁面內的按鈕相關,而數據權限則與業務相關。
當處理一些具有規則調整功能時,最好設計一個手動維護的方案,以便于后期的維護和擴展。否則,運營經常會要求研發修改配置,這種工作既沒有技術含量,時間長了還很煩人。
整個PRD的框架思考以及落地一般如下幾個方面:
I. 概述:
項目概述、項目目標、目標用戶、業務需求
II. 用戶角色權限設計:
用戶角色的定義、權限的定義、用戶角色和權限之間的關系、角色權限的繼承關系
III. 功能需求:
- 角色管理:添加角色、編輯角色、刪除角色
- 權限管理:添加權限、編輯權限、刪除權限
- 用戶管理:添加用戶、編輯用戶、刪除用戶
- 角色權限管理:分配角色權限、修改角色權限、查看角色權限
IV. 界面設計
角色管理界面、權限管理界面、用戶管理界面、角色權限管理界面
V. 數據庫設計
用戶表設計、角色表設計、權限表設計、用戶角色關聯表設計、角色權限關聯表設計
VI. 技術選型
服務器端框架選擇、數據庫選擇、前端框架選擇VII. 安全設計用戶身份認證、用戶授權、數據加密、日志管理
VIII. 運維設計
部署方式、服務器資源規劃、數據備份和恢復
01 概述、目標、用戶、業務需求
概述:
用戶角色權限系統是一種針對企業應用的權限管理系統,它能夠對系統中的用戶進行分類,按照用戶分類的不同,分配不同的權限,保障系統資源的安全和合理的使用。本系統采用模塊化設計,可以方便地對系統進行擴展和定制,滿足企業不同的業務需求
目標:
- 實現用戶權限的細粒度管理,確保用戶只能訪問其擁有權限的功能和數據。
- 實現用戶角色的分層管理,使得用戶角色可以隨著公司業務的發展進行擴展和調整。
- 實現用戶角色的授權管理,確保用戶角色的授權過程規范化、可追溯、可控。
- 實現用戶角色的審批管理,確保角色權限的變更得到有效審批和記錄。
用戶:
企業應用的管理員、員工、運維人員等
業務需求:
例如用戶運營可以訪問幫助反饋、不可以訪問廣告配置功能
02 用戶角色權限設計
用戶角色權限功能通常是指在一個系統中,為不同的用戶分配不同的角色,并在每個角色上定義一組特定的權限,以控制用戶對系統中各項功能的訪問和操作
關于用戶角色、權限、角色權限之間的定義和關系:
- 用戶角色的定義:用戶角色是指在一個系統中為不同類型的用戶或者用戶組定義的一個權限集合,可以用于控制用戶能夠訪問和執行的特定功能和操作。
- 權限的定義:權限是指一個用戶或者用戶組在系統中被授予的訪問或者執行特定功能或操作的能力。權限可以是系統中的一個功能、一個數據資源或者一個操作。
- 角色和權限之間的關系:角色和權限之間的關系是一對多的關系,一個角色可以包含多個權限,而一個權限可以被多個角色所包含。
- 角色權限的繼承關系:在某些情況下,一個用戶角色可能需要繼承其他用戶角色的權限。這可以通過定義一個角色之間的繼承關系來實現。例如,一個普通用戶角色可能需要繼承某些管理員角色的權限,以便能夠執行某些特定操作。
Tips
在實現角色權限的繼承關系時,通常會使用一種稱為“角色繼承”的技術,它允許子角色繼承父角色的權限。例如,如果有一個“管理員”角色,它具有所有管理員權限,而“高級管理員”角色可以繼承“管理員”角色的所有權限并添加一些額外的權限。
在數據庫中,可以使用一個角色表和一個權限表來實現角色繼承的關系。其中,角色表中保存了所有的角色信息,而權限表中保存了所有的權限信息。此外,還可以創建一個角色權限關聯表,用于保存每個角色與其對應權限的關系。
角色表可能包括以下字段:
- id: 角色ID
- name: 角色名稱
- parent_id: 父角色ID
權限表可能包括以下字段:
- id: 權限ID
- name: 權限名稱
- description: 權限描述
角色權限關聯表可能包括以下字段:
- role_id: 角色ID
- permission_id: 權限ID
通過使用這些表,可以構建一個角色繼承的關系圖,其中每個角色都可以繼承其父角色的權限。當給定一個角色時,可以使用關聯表來查找其對應的所有權限,并將其繼承的父角色的權限也添加到其中。這樣,即使沒有顯式為子角色分配權限,它們也可以從其父角色繼承權限。
在實現時,還需要考慮如何處理角色繼承的多層級關系以及如何處理權限的沖突。例如,如果子角色和父角色都具有相同的權限,應該選擇哪個權限。這些問題可以通過一些規則來解決,例如可以優先選擇子角色的權限,或者使用一些類似于“合并”的策略來合并相同的權限。
03 功能需求
下面是一個簡單的功能需求分析,可以根據實際情況進行擴展。
- 用戶管理模塊添加用戶:輸入用戶名、密碼、郵箱、電話等基本信息編輯用戶:修改用戶的基本信息刪除用戶:刪除用戶用戶列表:展示所有用戶的基本信息查看用戶詳情:查看某個用戶的詳細信息,包括角色和權限等信息
- 角色管理模塊添加角色:輸入角色名稱、描述等基本信息編輯角色:修改角色的基本信息刪除角色:刪除角色角色列表:展示所有角色的基本信息查看角色詳情:查看某個角色的詳細信息,包括權限等信息
- 權限管理模塊添加權限:輸入權限名稱、描述等基本信息編輯權限:修改權限的基本信息刪除權限:刪除權限權限列表:展示所有權限的基本信息
- 角色權限管理模塊角色權限關聯:為某個角色分配權限查看角色權限關聯:查看某個角色的權限列表
- 操作日志模塊
系統會記錄用戶登錄、退出、權限變更等操作,管理員可以查詢系統日志,以便追溯系統操作。
04 界面設計注意事項
設計用戶管理界面需要考慮以下幾個方面:
1 顯示用戶列表:
在界面中展示用戶列表,包括用戶名、角色、創建時間、最后登錄時間等信息。
2 新增用戶:
提供新增用戶的功能,需要輸入用戶名、密碼、郵箱等必要信息,同時可以選擇用戶角色。
3 編輯用戶:
提供編輯用戶信息的功能,可以修改用戶名、密碼、郵箱等信息,也可以修改用戶角色。
4 刪除用戶:
提供刪除用戶的功能,需要用戶確認操作。
5 搜索、篩選用戶:
提供搜索用戶的功能,可以按照用戶名、郵箱等關鍵字搜索用戶??筛鶕远x的標簽進行篩選。
6 分頁:
當用戶數量較多時,需要提供分頁功能,讓用戶方便地瀏覽和管理用戶。
7 角色管理:
提供角色管理功能,可以新增、編輯、刪除角色,為每個角色分配對應的權限。
8 權限管理:
提供權限管理功能,可以新增、編輯、刪除權限,將權限分配給不同的角色。
9 用戶密碼重置:
管理員可以為用戶重置密碼,以便用戶可以重新登錄系統。
簡單界面示意圖 – 用戶管理
下面是一個簡單的用戶角色權限管理功能的用戶管理界面示意圖:
在這個界面中,列出了系統中所有的用戶,包括他們的用戶名、角色和權限。管理員可以通過這個界面對用戶進行管理,如添加、編輯和刪除用戶。同時,管理員也可以通過這個界面查看每個用戶所具有的權限,以及他們所屬的角色。
簡單界面示意圖 – 角色管理
一般角色管理與角色權限管理分開做,這里的示意圖為融合在一起了。
在這個界面中,包括了角色列表和操作按鈕兩部分。在角色列表中,每行表示一個角色,包括了角色名稱和該角色所具有的權限。操作按鈕則包括了添加、編輯和刪除角色三個功能。
簡單界面示意圖 – 權限管理
權限管理一般由開發維護使用,業務只需要維護使用用戶管理、角色管理。
05 技術實現方案
- 前端技術: React/Vue
- 后端技術: Node.js/Java/Python
- 數據庫: MySQL/Oracle/MongoDB
- 接口協議: RESTful API
- 安全認證: JWT
- 部署方式: Docker/Kubernetes
- 代碼托管: Git/GitHub/GitLab
- 開發工具: VSCode/IntelliJ IDEA/PyCharm
專欄作家
鄒偉,微信公眾號:PMBass,人人都是產品經理專欄作家。擅長功能設計、原型設計,專注電商、游戲、人工智能等多領域。
本文原創發布于人人都是產品經理。未經許可,禁止轉載。
題圖來自Unsplash,基于CC0協議
該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。
如果權限有四級結構,請問是設置多個目錄,還是多個菜單呢
兩級目錄 or 兩級菜單?
我也疑惑
講了半天也沒講清楚要表達什么,就是用戶基于角色綁定權限。。。
你想聽啥
這類需求基本都是用戶基于角色綁定權限,再就是選擇不同的RBAC,你是脫離角色綁定權限?新的見解可以分享下
這種都是太常見了。數據權限怎么控制
組織架構和權限的關系