rbac簡介

來自百度百科:基於角色的訪問控制(Role-Based Access Control)作為傳統訪問控制(自主訪問,強制訪問)的有前景的代替受到廣泛的關注。在RBAC中,權限與角色相關聯,用戶通過成為適當角色的成員而 得到這些角色的權限。這就極大地簡化了權限的管理。在一個組織中,角色是為了完成各種工作而創造,用戶則依據它的責任和資格來被指派相應的角色,用戶可以 很容易地從一個角色被指派到另一個角色。角色可依新的需求和系統的合並而賦予新的權限,而權限也可根據需要而從某角色中回收。角色與角色的關系可以建立起 來以囊括更廣泛的客觀情況。

需求

權限管理系統中需要有這么幾個角色:管理員、編輯、普通用戶,並且管理員擁有所有權限,編輯擁有管理文章的權限,普通用戶沒有登錄后台的權限

數據庫設計

根據上面的需求,設計了以下數據庫

database

說明:系統中有用戶表(user)、角色表(role)、角色權限表(role_privilege)、權限表(privilege)、菜單表(menu_item) 每個用戶對應一個角色,每個角色有多個權限,每個權限屬於一個菜單項

初始化數據庫

根據需求,整個rbac系統的后端分為以下幾個模塊:

  1. 用戶管理:

    用戶查詢

    用戶編輯

    用戶刪除

    用戶添加

  2. 文章管理

    文章查詢

    文章編輯

    文章刪除

    文章添加

對於管理員用戶:擁有用戶管理和文章管理的權限

對於編輯用戶:擁有文章管理的權限

對於普通用戶:無進入后端管理的權限

根據以上需求,對數據庫進行初始化

  • 首先,插入菜單的數據庫記錄

table menu

  • 插入權限數據庫記錄

table privilege

  • 插入角色記錄

table role

  • 插入角色權限數據庫記錄

role privilege

  • 插入三條用戶記錄,分別是管理員、編輯和普通用戶

table user

數據庫的設計到此為止,目前這個權限系統已經托管到了github上了,后續的程序實現思路會另外寫一篇博文

github托管地址:rbac-codeigniter Demo地址:rbac demo(管理員帳號:admin,編輯:editor,普通用戶:user,所有帳號的密碼都是password)