RBAC實現原理之1

2021-07-29 19:26:21 字數 2570 閱讀 8347

rbac就是:role based access controller,基於角色(role)的許可權(access)管理,這裡簡單介紹一下他的原理與實現方式之一。

首先最基本的組成有:使用者(admin),角色(role),具體許可權(auth),這三者之間的關係是這樣的:乙個使用者只擁有一種角色,一種角色下擁有多個許可權,乙個許可權也會同時被多個角色擁有,也就是說admin表和role表是一對一關係,role和auth表是多對多關係,本來符合正規化設計要求的情況應該是需要一張關聯表的,但是這裡為了簡單,就只把role擁有的auth寫成乙個欄位auth_id_lst。所以具體的表設計就是:

admin

role

auth

為了更直接的理解,這裡放幾個每張表的具體記錄:

auth

auth_id

auth_name

auth_pid

1**商管理0

2**商新增13

**商修改14

商品管理0

5商品下架46

顧客管理0……

role

role_id

role_name

auth_id_lst

1物流部門經理

1,2,3

2銷售部門經理

4,53

公關部門經理6

admin

admin_id

admin_name

role_id1張三

12李四2

3王五3

這樣就可以儲存住具體的使用者所擁有的具體許可權了,而其中為了能更好的管理具體auth,同時也為了更好的理解,所以加入了role表進行補充,如果做乙個類似的話,更像下面的形式:

同乙個部門的人,所需要的許可權基本是相同的,所以可以使用乙個role進行統一管理。

上面只是簡單做乙個介紹,這一部分開始將介紹具體的實施方案,來自於乙個帶我的大哥。看懂下面的部分你需要具備的知識點有:

這個使用的場景是乙個後台管理系統,針對不同role開放不同的controller(控制器)和action(方法),所以auth表具體結構如下:

admin

接下來就是具體的操作步驟了:

在thinkphp中每個controller都會繼承乙個thinkphp下的think\controller,這個時候可以新建乙個controller,之後讓所有的controller都繼承這個新建的類,這樣所有進行的操作都要先經過這個新建控制器的篩選。

下面是這個新建類的部分內容:

<?php

namespace admin\controller;

use think\controller;

class fathercontroller extends controller

// 後面還有內容,這裡先到這裡

}}?>

1.1中跳轉到乙個登入的頁面,在這個登入頁面中輸入使用者名稱、密碼、驗證碼之後,就可以呼叫專門model類來進行驗證了。這裡就細講了,這裡講解一下具體步驟:

<?php

namespace admin\controller;

use think\controller;

class fathercontroller extends controller

// 這裡是後面新建的內容

// controller_name 當前呼叫的控制器名,think的變數

// action_name 與controller_name一樣,表示當前呼叫的控制器下的方法

$currentmethod=controller_name.'/'.action_name;

// 上面其實是thinkphp一般的pathinfo模式的url格式

// index隨便呼叫,其實就是主頁,在主頁有其他設定,用於展現其所擁有的許可權,這個後面再看

if(controller_name=='index')

// 讀取使用者所擁有的所有許可權,已經將字串解析成陣列形式了

$allowmethod=session('auth_id_lst');

// *表示超級使用者,擁有所有許可權,如果使用者請求超越自己許可權的操作,則會顯示錯誤提示頁面

if($allowmethod!='*' && !in_array($currentmethod, $allowmethod))

}}?>

主頁是使用thinkphp的內建標籤自動生成的,所以只要把握好輸出的內容,就可以限制住給於使用者的操作許可權,上面說過,其中賦予使用者的操作許可權都是儲存在session(『menu』)中,所以只要在內建標籤中呼叫這個值進行顯示就可以了,具體內容就是這樣。

講的很爛我知道,畢竟只花了半個小時看其中的具體內容,之後可能會嘗試自己寫寫看吧,那時候再說吧。

thinkPHP框架RBAC實現原理分析

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

RBAC許可權管理1

rbac 模型作為目前最為廣泛接受的許可權模型 角色訪問控制 rbac 引入了role的概念,目的是為了隔離user 即動作主體,subject 與privilege 許可權,表示對resource的乙個操作,即operation resource role作為乙個使用者 user 與許可權 pri...

許可權元件之rbac

rbac 基於角色的許可權訪問控制 role based access control rbac的主要流程 給每個角色賦予不同的許可權,是這個角色的員工都有這個角色的所有許可權。乙個角色可以有多個人員擔任,乙個員工可以擔任多個角色 比如部門經理 業務員等 當員工成功登陸系統時,系統需要獲取這個員工的...