thinkphp如何寫自己的Rbac

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

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樓:

複製**

會跳轉到

複製**

如圖所示:

系統預設新增了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樓:一騎當後

新建一個沒有許可權 丟擲錯誤

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

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

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

class indexaction extends baseaction{

**,僅供參考。

請問如何寫適合自己的簡歷,請問如何寫一篇適合自己的簡歷?

個人簡歷可以是 的形式,也可以是其他形式。個人簡歷一般應包括以下幾個方面的內容 1 個人資料 姓名 性別 出生年月 家庭地址 政治面貌 婚姻狀況,身體狀況,興趣 愛好 性格等等 2 學業有關內容 就讀學校 所學專業 學位 外語及計算機掌握程度等等 3 本人經歷 入學以來的簡單經歷,主要是擔任社會工作...

sql語句如何寫,sql語句如何寫

簡單的幾個 查詢 select 欄位 from 表名 where 條件增加 insert into 表名 values 欄位 欄位型別 修改 update 表名 set 欄位 多少 where 條件刪除 delete from 表名 where 條件還有什麼 alter啊什麼什麼的。還要看你用的什麼...

如何寫一首屬於自己的歌曲

小小 如果你要寫一首帶歌詞的歌,你需要在寫這首歌時考慮歌詞。這裡有很多種將歌詞置入歌曲的方法。你可以先開始寫歌詞,或者寫完旋律後寫歌詞,或者你可以二者結合。這取決於你的能力和風格。你也需要考慮 的風格,確保風格與歌詞匹配,反之亦然。如果你要寫背景 主題 或者其他型別的器樂,你也需要有相應的計劃。想一...