大約的結構
其他欄位自已再加上去
Table間關連 圓頭表示 1 箭頭表示 多
我也貢獻一張圖好了,資料表的話我會這麼設計
請問一下大大,不是只要建立user(使用者)、permission(權限)、permission_owner(權限擁有者)在互相FK,就好了嗎? 怎麼需要建立這麼多張table?
窮嘶發發發 大師的結構比較好, 不同的Page是會有不同的Right, 我的Page Right是固定欄位.
情境說明: 當公司人數較多, 有多部門, 我們以業務部門為例, 我建立權限的順序是 1.業務部Group, 2.業務部應有的權限GroupRight, 3.業務部成員UserGroup.
如此, 當有新業務人員報到, 只要將該成員加入UserGroup即可, 系統有新增功能提供給業務使用, 也是將該功能加入GroupRight即可.
一般使用Group即可符合大部份的需求, 但有時, 就是要開放某一特殊功能給業務部中的某位同事, 此時就會使用到UserRight.
若設計只有User而沒有Group, 人員未適當的分組, 對於權限的管理並不太理想, 調整權限時也較費時間.
使用者-政策
一個使用者可以有多個政策
那政策存的是字串,格式如下
編輯:文章:rw|商品:rw
會計:報表:rw|統計:rw
在文章的頁面檢核進入的人是否有相應的權限,權限採白名單,有就可以進入、修改
用兩張一對多的資料表就完工了
可參考:
https://github.com/OWASP/rbac
https://my.oschina.net/programs/blog/1648205
簡單淺顯的說
在進入每個頁面之前都先檢查Role
沒有相對應的Role就轉移到首頁
可以角色為基礎的存取控制(Role-based access control, RBAC),將系統授權拆解為User(使用者)、Role(角色)、Permission(權限)。讓開發人員可以在系統內,定義使用者屬於哪個角色、哪個角色擁有那些權限、權限可以使用哪些功能。後續使用者通過驗證之後,就可以依照角色權限來使用系統功能。
參考
1.維基百科
https://zh.wikipedia.org/wiki/以角色為基礎的存取控制
2.後台設計的基石:用戶許可權管理(RBAC)及工作流(workflow)模型
https://www.pixpo.net/technology/0IXXB4vD.html
3.RBAC概念与系统设计
http://blog.thrimbda.com/2017/05/06/RBAC实践系统设计/