Yii2 rbac許可權控制之rule教程詳解

2022-10-06 06:51:11 字數 1750 閱讀 5195

在我們之前yii2搭建後台並實現rbac許可權控制完整例項教程中,不知道你曾經疑惑過沒有乙個問題,rule表是做什麼的,為什麼在整個過程中我們都沒有涉及到這張表?

相信我不說,部分人也都會去嘗試,或百度或google,到頭來也會竹籃打水,這部分講解的內容少之又少啊!

對於一般的許可權系統而言,我們之前做的rbac一般情況下是足夠的,即時沒有rule,相信你也能實現我們用rule實現的功能。

我們就以官網的例子給出乙個具體的操作教程,看看這個神秘的rule到底是做什麼的!

看需求:

我們有管理員和普通使用者,對於文章系統而言,我們允許管理員對文章的任何操作www.cppcns.com,www.cppcns.com但是只允許普通使用者建立文章和修改自己建立的文章,注意哦,是允許其修改自己建立的文章,不是不允許修改文章,也不是修改所有的文章!

看yii2 rbac rule怎麼去實現,重點是教大家怎麼去使用這個rule,也解開眾多人心中的節!

在oudjamw我們新增rule之前,需要先實現 yii\rbac\rule類的execute方法。

phpnamespace backend\components;

use yii;

use yii\rbac\rule;

class articlerule extends rule

}接著,我們才可以去後台rule列表(/admin/rule/index)新增rule。具體新增方式可參考下方截圖

注意,上面這一步很多人會死在類名的新增上,記得加上我們articlerule檔案所在的命名空間!

我們看第三步,該步驟也是很容易出錯的地方!該篇教程請注意集中精力,前方高能!

我們訪問許可權列表(/admin/permission/index)新增許可權,該許可權只針對文章的修改,隨後我們將其分配給使用者所屬角色

需要注意了,此處嚴重警告,這裡新增加的許可權所控制的路由也就是文章的更新操作(/article/update)分配給當前使用者僅且一次,重複分配當前操作給所屬角色或使用者,可能造成rule失效,失效原因則是覆蓋!

此刻再次重新整理文章的更新頁面(/article/update/1),很顯然直接給我們了403 forbidden沒許可權訪問的提示,也就是我們剛剛新增的rule生效了!如果此刻沒生效,請檢查上面所說的兩個注意點!

然後我們實現articlerule::execute方法內業務邏輯,可參考如下:

class articlerule extends rule

$model = article::findone($id);

if (!$model)

$username = yii::$app->user->identity->username;

$role = yii::$app->user->identity->role;

if ($role == user:oudjamw:role_admin || $username == $model->operate)

return false;

}}最後就是驗證了,到底我們所實現的rule認證起作用了沒呢?

測試步驟如下可做參考:

1.當前使用者建立一篇文章,記得記錄當前文章的建立者,其角色是管理員,我們預設user::role_admin

2.建立乙個普通使用者,且也建立一篇文章,同時也需要記錄當前文章的建立者

3.分別用管理員帳號和普通使用者登入系統修改這兩篇文章,結論自然是滿足我們一開始所提的需求,管理員兩篇文章均可修改,普通使用者只能修改自己的文章

本文標題: yii2 rbac許可權控制之rule教程詳解

本文位址:

Yii2 rbac許可權控制詳解

首先本文所講的許可權控制有2種,一種是在資料庫裡建表,另一種是在框架裡寫檔案,dbmanager,phpmanager 第一種 我們先來講第一種dbmanager 1.yii config檔案配置 我用的高階模板 配置在common config main local.php或者main.php 2...

yii2 rbac許可權設定

tip1 配置 rbac也就是基於角色的許可權管理規則,由角色,許可權和規則構成,使用它首先需要到配置檔案配置,class有兩種,phpmanager和dbmanager兩種 authmanager class yii rbac phpmanager defaultroles author 然後在y...

yii2 rbac許可權控制詳細操作步驟

本篇的主題是 rbac許可權控制的詳細操作步驟,注意是操作步驟哦,關於配置與rbac的搭建,我們在博文 yii2搭建完美後台並實現rbac許可權控制例項教程說的再清楚不過了。但是,在很多人的反饋下,說是完全按照本主的步驟來的,絲毫不差,為啥選單不顯示,為啥不顯示呢不顯示?艾瑪,最終在群裡幫人除錯的時...