rbac簡介
來自百度百科:基於角色的訪問控制(Role-Based Access Control)作為傳統訪問控制(自主訪問,強制訪問)的有前景的代替受到廣泛的關注。在RBAC中,權限與角色相關聯,用戶通過成為適當角色的成員而 得到這些角色的權限。這就極大地簡化了權限的管理。在一個組織中,角色是為了完成各種工作而創造,用戶則依據它的責任和資格來被指派相應的角色,用戶可以 很容易地從一個角色被指派到另一個角色。角色可依新的需求和系統的合並而賦予新的權限,而權限也可根據需要而從某角色中回收。角色與角色的關系可以建立起 來以囊括更廣泛的客觀情況。
需求
權限管理系統中需要有這么幾個角色:管理員、編輯、普通用戶,並且管理員擁有所有權限,編輯擁有管理文章的權限,普通用戶沒有登錄后台的權限
數據庫設計
根據上面的需求,設計了以下數據庫
說明:系統中有用戶表(user)、角色表(role)、角色權限表(role_privilege)、權限表(privilege)、菜單表(menu_item) 每個用戶對應一個角色,每個角色有多個權限,每個權限屬於一個菜單項
初始化數據庫
根據需求,整個rbac系統的后端分為以下幾個模塊:
-
用戶管理:
用戶查詢
用戶編輯
用戶刪除
用戶添加
-
文章管理
文章查詢
文章編輯
文章刪除
文章添加
對於管理員用戶:擁有用戶管理和文章管理的權限
對於編輯用戶:擁有文章管理的權限
對於普通用戶:無進入后端管理的權限
根據以上需求,對數據庫進行初始化
- 首先,插入菜單的數據庫記錄
- 插入權限數據庫記錄
- 插入角色記錄
- 插入角色權限數據庫記錄
- 插入三條用戶記錄,分別是管理員、編輯和普通用戶
數據庫的設計到此為止,目前這個權限系統已經托管到了github上了,后續的程序實現思路會另外寫一篇博文
github托管地址:rbac-codeigniter Demo地址:rbac demo(管理員帳號:admin,編輯:editor,普通用戶:user,所有帳號的密碼都是password)
本文出自 Charles的技術博客,轉載時請注明出處及相應鏈接。
本文永久鏈接: http://www.oserror.com/database/96.html