Yii 框架的Rbac 許可權控制

2022-09-01 23:06:24 字數 2633 閱讀 8204

**自 xmlife 的部落格 :

1.首先我們要在配置檔案的元件(component)裡面配置一下 rbac

[php] view plain

copy

『authmanager』 => [

『class』 => 『yii\rbac\dbmanager』,

『itemtable』 => 『auth_item』,

『assignmenttable』 => 『auth_assignment』,

『itemchildtable』 => 『auth_item_child』,

],2.生成rbac預設資料表

a.執行下面的命令生成許可權資料表:

yii migrate --migrationpath=@yii/rbac/migrations/

b.也可以開啟vendor\yiisoft\yii2\rbac\migrations\schema-mysql.sql 拷貝裡面的內容到資料庫執行生成資料表

3.新增角色和許可權

a.建立許可權

[php] view plain

copy

public function createpermission($name)

b.建立角色

[php] view plain

copy

public function createrole($name)

以上兩條新增,會創auth_item表中建立兩條記錄,以表中的type型別作為區分,type=1是角色,type=2為許可權

[php] view plain

copy

public function add($object)

elseif ($object instanceof rule)  else 

}add方法會根據你傳入的物件屬性進行新增(新增角色和許可權都是additem,因為createpermission和createrole都建立了乙個item物件,只是物件中的type值不同)

4.新增使用者、角色和許可權之間的關係

a.將許可權賦給角色

[php] view plain

copy

public function addchild($items)

注意:上面建立的角色和許可權物件,必須已經在資料庫中建立,比如items[『role』] = test,否則會報錯

b.將角色賦給使用者

[php] view plain

copy

public function addchild($items)

5.驗證許可權

[php] view plain

copy

public function beforeaction($action)

else

}[php] view plain

copy

public function can($permissionname, $params = , $allowcaching = true)

$access = $this->getauthmanager()->checkaccess($this->getid(), $permissionname, $params);

if ($allowcaching && empty($params)) 

return $access;}舉報

分類:yii2(48)

思路解說:

首先,我們約定以controller/action這樣的格式作為有效的許可權名稱,直接將許可權賦給使用者,最後在can這個方法中做校驗。為了不破壞原始碼,我們可以在activerecord之前加一層基礎控制器basecontroller,普通控制器繼承basecontroller。

方案一建立許可權:

那麼我們建立對應的許可權資料(如何建立在rbac第二篇中已經詳細講解)

許可權post/detail:文章詳情頁的許可權

許可權賦給使用者:

將許可權直接賦給使用者(此處使用者id為1)

檢測許可權:

在基礎控制器中的beforeaction中驗證許可權:

[php] view plain

copy

public function beforeaction($action)

$permissionname = $controller.『/』.$action;

throw new \yii\web\unauthorizedhttpexception(『對不起,您現在還沒獲此操作的許可權』);

}return true;

}注意:

[php] view plain

copy

這個必須要加,不然會報錯,至於為什麼就不多說了,簡稱一言難盡,v_v

方案二(**就不贅述了跟上面差不多)

許可權賦給角色,角色賦給使用者

建立角色:

還是之前的許可權[post/detail],去掉許可權和使用者關聯,新增許可權和角色的上下級關聯

將角色賦給使用者

檢測許可權

效果於上面保持一致

Yii2 rbac許可權控制詳解

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

yii 使用DB實現rbac 許可權控制

rbac 中文名稱 基於角色的許可權控制 先說後台 首先是建立許可權和角色 然後是使用我們 的使用者表 給角色分配許可權 給使用者分配角色 前台 首先 根據我們的使用者id 查詢出這個人都有什麼角色 接下來 跟據我們的角色id 查出這些角色所擁有的許可權。把這些許可權寫到乙個陣列裡 然後,獲取當前操...

Yii2 許可權控制RBAC 應用篇(二)

1.首先我們要在配置檔案的元件 component 裡面配置一下 rbac authmanager class yii rbac dbmanager itemtable auth item assignmenttable auth assignment itemchildtable auth ite...