基於thinkphp的RBAC許可權控制

2022-02-05 17:28:11 字數 1303 閱讀 2580

rbac  role-based access control

許可權控制在後台管理中是十分常見的,它的模型大體上是下面這張圖的形式

我用的字段和上面不一樣,圖只是個示例

乙個簡易的許可權控制模型只需要3個表就行了

user表:記錄使用者的資訊和使用者的角色

->user_id:使用者的id

->user_role_id:使用者的角色資訊  0,1,2分別為超級管理員,經理,員工

->其它省略。。。

role表:記錄不同的角色資訊,和他們擁有的許可權

->role_id:角色的id    1為經理,2為員工,0無許可權限制

->role_name:角色名稱

->role_auth_ids: 存放許可權的id

->role_auth_ac:該角色能夠訪問的頁面

auth表:記錄每個許可權的具體資訊

->auth_id:許可權id

->auth_name:許可權名稱

->auth_pid:許可權的父級許可權的id 

->auth_c:控制器的名稱

->auth_a:顯示頁面的名稱

->auth_path:用id表示許可權的層級關係  0級許可權為空,比如使用者管理的id為5(假設它為最高端),那麼它的auth_path為0,禁言使用者為子許可權,id為10。那麼它的auth_path為5-10

->auth_level:許可權的等級  0為乙個目錄下的最高許可權,1為次級,2為次次級 如:商品管理(0)->商品列表(1)->新增商品。有些人能檢視商品,但不一定能刪除商品

當使用者訪問頁面時,先獲取使用者的資訊

user表中得到使用者的角色資訊,比如得到的是經理 id為1

現在再去角色資訊表中獲取,該角色的許可權

能訪問的許可權id有了,頁面也有了。只要獲取頁面的路由,只要在我的許可權內,則能訪問,不再則顯示沒有許可權

那麼auth_path表好像沒用到?一開始許可權表是空的

我們新增許可權的時候產生了id和頁面的名稱

然後再把這些許可權給 經理和員工角色,所以他們的表裡面有了對應的資訊

然後給每個員工定義經理,員工等角色。。。。。。。

thinkphp的rbac設計到幾張表

think role 使用者主表 think role user 組合使用者對應關係 think node 節點表 think access 使用者許可權表 think user 使用者表 基本三個字段,id,username,password 節點表 節點 就是專案,模組,方法之間的關係,能訪問專...

thinkPHP框架RBAC實現原理分析

rbac就是 role based access controller,基於角色 role 的許可權 access 管理,這裡簡單介紹一下他的原理與實現方式之一。part 1 資料庫設計 首先最基本的組成有 使用者 admin 角色 role 具體許可權 auth 這三者之間的關係是這樣的 乙個使用...

RBAC 基於角色的訪問控制

rbac role based access control,基於角色的訪問控制 就是使用者通過角色與許可權進行關聯。簡單地說,乙個使用者擁有若干角色,每乙個角色擁有若干許可權。這樣,就構造成 使用者 角色 許可權 的授權模型。在這種模型中,使用者與角色之間,角色與許可權之間,一般者是多對多的關係。...