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

2021-10-01 12:39:11 字數 4269 閱讀 4476

rbac

中文名稱:基於角色的許可權控制

先說後台

首先是建立許可權和角色

然後是使用我們**的使用者表

給角色分配許可權

給使用者分配角色

前台 :

首先 根據我們的使用者id 查詢出這個人都有什麼角色

接下來 跟據我們的角色id 查出這些角色所擁有的許可權。把這些許可權寫到乙個陣列裡

然後,獲取當前操作的控制器和方法名(tp框架裡函式是 controller_name/action_name) 然後判斷當前的操作是不是在該登入使用者的許可權組裡,如果在進入這個方法成功如果不在提示沒有該操作的許可權

//具體的操作方法

首先我們建立乙個公共的控制器 叫做commemcontroller.php 讓他繼承我們的基類控制器 在這個公共的控制器裡 寫判斷許可權的方法。 然後把需要進行許可權控制的控制器讓它繼承公共控制器 不需要的繼承基類控制器

以上說的都是基於角色的許可權控制

還有一種 基於許可權的角色控制

yii2.0 中有兩種許可權控制方式

一種是基於 php的

一種是基於 db的

首先我們要有五張表

首先 我們要有乙個登入儲存使用者資訊的user表

表結構如下

drop

table

ifexists `user`;

create

table `user` (

`id` int(11

)not

null

auto_increment

,`username` varchar

(255

)not

null

,`auth_key` varchar(32

)not

null

,`password_hash` varchar

(255

)not

null

,`password_reset_token` varchar

(255

)default

null

,`email` varchar

(255

)not

null

,`role` smallint(6

)not

null

default

'10'

,`status` smallint(6

)not

null

default

'10'

,`created_at` int(11

)not

null

,`updated_at` int(11

)not

null

,primary

key(`id`)

)engine

=innodb auto_increment=3

default

charset

=utf8;

//yii的rbac 是乙個元件 有自帶的剩餘的表的表結構

具體位置 在 vendor/yiisoft/yii2/rbac/migrations/mysql。sql

到這裡 我們的五張表 就弄完了

我們要想使用yii的rbac元件 需要先載入元件

在common/config/main-local.php 或者 main.php 新增下面一段話

'authmanager'

=>

['class'

=>

'yii\rbac\dbmanager'

,'itemtable'

=>

'auth_item'

,'assignmenttable'

=>

'auth_assignment'

,'itemchildtable'

=>

'auth_item_child',]

,

接下來 建立許可權和角色

先建立許可權

這裡我們使用的是文字框輸入資料達到輸入的目的的,表單小部件這部分我們略過

public

function

actionaddpower()

然後建立角色

public

function

actionaddrole()

給角色分配許可權

public

function

actiondorp()

echo

"分配成功 點我給使用者分配角色"

;}

給使用者分配角色

public

function

actiondour()

}

然後我們在我們需要做許可權控制的控制器裡 新增下邊的方法就可以了

public

function

beforeaction

($action

)else

}

下邊是完整的**

model層 rbac.php

<?php

/*** created by phpstorm.

* user: jinlei

* date: 2017/5/12

* time: 9:39

*/namespace

frontend\models

;use

yii\base\model

;use

yii\widgets\activeform

;use

yii;

usedb

;class

rbac

extends

model

static

public

function

getrole()

static

public

function

getpower()

static

public

function

getuser()

static

public

function

arrtostr

($data

)return

$arr;}

static

public

function

arrtouser

($data

)return

$arr;}

}

控制器層 rbaccontroller.php

<?php

/*** created by phpstorm.

* user: jinlei

* date: 2017/5/12

* time: 9:42

*/namespace

frontend\controllers

;use

yii\web\controller

;use

frontend\models\rbac

;use

yii;

class

rbaccontroller

extends

controller

public

function

actionaddpower()

public

function

actioncreaterole()

public

function

actionaddrole()

public

function

actionrp()

public

function

actiondorp()

echo

"分配成功 點我給使用者分配角色";}

public

function

actionur()

public

function

actiondour()

}public

function

beforeaction

($action

)else

}}

view層 因為檔案較多 這裡就不一一枚舉了 都是用的表單小部件

yii2 rbac許可權設定

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

Yii 框架的Rbac 許可權控制

自 xmlife 的部落格 1.首先我們要在配置檔案的元件 component 裡面配置一下 rbac php view plain copy authmanager class yii rbac dbmanager itemtable auth item assignmenttable auth ...

Yii2 rbac許可權控制詳解

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