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...