thinkphp如何寫自己的Rbac

時間 2022-09-04 22:35:09

1樓:匿名使用者

哎,就35分,要回答你這個問題的話。。。有點虧了!呵呵。。

下面,我就大致跟你講一下思路吧!

首先,先說一下怎樣實現rbac的許可權過濾。其實說白了就是在我們每次訪問action操作的時候,都問一下,我可不可以操作,如果可以,放行;否則,攔截並給出提示!

那麼,我們怎麼才能實現在每次訪問action的時候都會先“問”一下的操作呢?並且,這個“問”一定要在所有程式開始執行之前,否則就沒有意義了。。。

這樣的話,如果實現上述操作,就涉及到了兩點:

1、每次問的時候是問誰,怎麼問?

2、“問”操作怎麼才能在所有程式開始執行前執行?

答:1、在執行使用者登入的時候,登入成功後必須有一個操作是查詢該使用者能訪問的節點(action),然後把查詢到的資訊封裝到session裡,然後每次在執行action前,都要in_array(問)一下:如果當前訪問的節點action在我的session裡,放行;否則,攔截!

2、tp自帶了一個_initialize公共方法,該方法實現了每次在執行action的時候都要先執行這個方法!我的建議是:先建一個baseaction類,讓這個類繼承tp的action類,然後後續自己寫的每一個類都要繼承baseaction這個類!

這樣,在baseaction這個類裡邊只有宣告一個_initialize公共方法,就能做到每次在訪問節點之前“問”的操作了!

嗯,思路大概就是個思路,沒法再詳細了,再詳細就得把那5張表搬出來了,要是真搬出來,那就得說到天黑了,呵呵。。。。那5張基本的表(也可以用4張)的關係必須得搞清楚了,否則上邊的我等於白說!

涉及到的5張表(或者4張):

管理員user表

管理員角色對應userrole表(可無)

角色role表

角色節點對應rolenode表

節點node表

如果你連這5張表的關係還沒搞明白的話,那我上邊的答案等於白寫,那麼推薦你可以先看一下這個帖子!

但願能幫到你!!!

2樓:匿名使用者

你直接把tp的rbac例子複製過來用不就得了。。。。

thinkphp 怎麼例項化rbac

3樓:

複製**

會跳轉到

http://localhost/rbac/public/login複製**

如圖所示:

系統預設新增了3個角色(不包括超級管理員賬號),用不同的賬號登入後會有不同的操作許可權。首先,我們建議用admin(超級管理員賬號,不受許可權控制影響)賬號登入進行相關的修改設定。登入後,切換到應用中心

thinkphp的rbac容易理解麼??

4樓:匿名使用者

如果出現登入頁面,說明成功了,輸入正確的使用者名稱和密碼登入成功之後,訪問相關的模組及方法

如果沒有許可權,它會報沒此許可權

9、以後要做的把相關的模組在後臺進行控制,以及分角色管理

thinkphp3.2rbac許可權如何弄

5樓:carol木子臻

容易理解\r\n與rbac訪問控制相關的概念有:\r\n 1. 使用者(user):

一個具有唯一識別符號的使用者,與許可權相分離,只能通過所屬的role去關聯許可權,一個使用者可以擁有多項角色;\r\n 2. 角色(role):一定數量的許可權的集合,角色可以繼承,一個角色對應多項許可權;\r\n 3.

許可權(resource):也可以看作是資源,它對應了應用系統中的一個功能;

thinkphp的auth許可權和rbac有什麼區別

6樓:匿名使用者

相同點:

1.兩種都是基於角色許可權控制

2.都是同一個使用者可屬於多個角色或使用者組

不同點:

rbac:

1.rbac是基於節點控制,根據3級節點,module,controller,action,節點類似與樹形結構,3級節點間相互有關聯

2.表關係:使用者表->使用者角色關聯表->角色表->角色節點關聯表->節點表

3.根據3級節點控制,粒度到操作action,每個節點為單一的模組,控制器或操作

auth:

1.auth是基於規則控制,定製規則和條件表示式 ,每一條規則都是獨立的

2.表關係:使用者表->使用者和使用者組關聯表->使用者組表->規則表

3.根據規則控制,可自由定製不同的規則,非常自由,同一個規則內可以定製多個不同節點(中間的關係:or and)

4.可定製規則表示式,比如定製積分表示式

想法和問題:

auth:

1.auth驗證多條規則時條件表示式不起效果

2.auth官方例子只說一個根據積分的規則,假如我規則"admin/goods/goodslist,admin/goods/goodsdel"我

能不能定義這裡面的某些id所屬角色操作許可權的規則表示式,而這些所屬角色id是goods表裡的某個欄位,可能所屬的角色是多個不同的角色?

3.auth不支援"admin/*"泛解析,因為他每一條規則都是獨立的

4.對選單,頁面,按鈕類的顯示使用auth會必rbac更好更方便

rbac:

1.新手配置rbac的時候經常出現 rbac $_session['_access_list'] 獲取不到的問題,因為rbac是使用thinkphp的底層db引擎dsn連線資料庫,需要配置資料庫連結和5個表的關係,欄位名和表名不能出現問題

2.允許完成"admin/*"型別的泛解析,比如這裡直接定製一個admin模組的節點,不要下級節點就可以了

通用:1.不管是rbac的角色表或者auth裡面的使用者組表也好,都可以擴充套件,比如對角色或使用者組進行多層分級

2.rbac的節點和auth的規則都可以進行分級,比如前端功能許可權,後端功能許可權,後端某個功能模組許可權等等

3.上面兩個東西都不能應用到許可權管控之中去,比如rbac不能分享上級角色許可權,auth使用者組也不能,但是能更好的管理和更加流程化的操作.

thinkphp的rbac怎麼使用

7樓:一騎當後

新建一個baseaction.class.phpfunction _initialize()// 沒有許可權 丟擲錯誤

if (c('rbac_error_page')) else// 提示錯誤資訊

$this->error(l('_valid_access_'));}}

}讓所有的action都繼承這個。

class indexaction extends baseaction{

**,僅供參考。

如何寫簡歷,如何寫簡歷

有針對性,突出自己的優勢並與企業的要求相匹配,其他的條件不能改變去伯小樂答題提高自己的能力也可以。你是否投了簡歷卻沒有回應?如何寫簡歷 100 既然你已經選擇了這個行業,又有相關證書,建議你先把這個證掃瞄放進你的簡歷中,形象說你自己適合這個專業。其次,在簡歷中展示出你應聘這個崗位的特點在哪,例如,游...

如何寫愛情藏頭詩,如何寫藏頭詩?

渾初翠 愛這一回說不清,情之所至誰人明?藏在心裡與誰聽?頭回講出難安靜,詩詞歌賦也未靈。 姑蘇夜鍾 詩句共四句。古體的詩歌。後兩句打頭字分別為心和 肝。前兩句的打頭字分別是你寶貝的名字或暱稱的兩個字!比如郭靖寫這首詩 舉例 四詩句的打頭字,就是 1,蓉,2,兒,3,心,4肝。每句後面的內容,你就自己...

如何寫文化考察,如何寫文化考察

內容來自使用者 楊佩熔 xx生物科技發展 上海 赴新疆xx集團訪問活動方案 一 初擬日程 9月18日 在楊凌集中召開經營工作會議 9月19日出發前往新疆伊犁 9月20日 21日在冠通集團進行訪問對接 9月22日黃董事長 張興老師等領導返程 技術團隊由陳燎老師牽頭,開展具體工作,落實雙方合作事項。二 ...