大多數項目中,多多少少都會涉及到權限控制,各種程式設計語言也有相對應的開源代碼。但是,在項目複雜的項目中,可能無法滿足我們的需求,是以,我們來介紹下完整的RBAC 及其資料庫設計。
RBAC,即基于角色的權限通路控制(Role-Based Access Control), 下面來設計其資料庫。
資料庫對應關系如下圖:

首先三張基礎資料庫表:
使用者(rabc_user) 表:
角色(rbac_role)表:
權限(rbac_node)表:
以上三張表,分别負責存放使用者(rbac_user)、角色(rbac_role)、權限(rbac_node)的資訊, 如需其他資訊,可自行添加字段。
下面我們建立角色與權限的中間表,負責角色與權限的對應:
在很多開源項目中, 一般隻有這三張表,在使用者(rbac_user)中加入 role_id ,即可實作使用者的權限通路控制。
然而,對于多角色的通路控制, 我們仍需要加入另一張表,負責角色與使用者的對應:
到此,我們可以通過以上5張表實作多角色的權限通路控制,但是當我們取使用者權限時,需要連接配接4張表才可以取到權限,代碼會比較複雜,因為,我們可以通過視圖來簡化我們的業務邏輯。不熟悉視圖的朋友,可以參考MySQL 視圖應用以及介紹 進行學習。