成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? Yii2 rbac權限控制之rule教程詳解
全站頭部文字 我要出現在這里
Yii2 rbac權限控制之rule教程詳解 669 2024-01-31   

在我們之前Yii2搭建后臺并實現rbac權限控制完整實例教程中,不知道你曾經疑惑過沒有一個問題,rule表是做什么的,為什么在整個過程中我們都沒有涉及到這張表?

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

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

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

看需求:

我們有管理員和普通用戶,對于文章系統而言,我們允許管理員對文章的任何操作,但是只允許普通用戶創建文章和修改自己創建的文章,注意哦,是允許其修改自己創建的文章,不是不允許修改文章,也不是修改所有的文章!

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

在我們添加rule之前,需要先實現 yiirbacRule類的execute方法。

<?php
namespace backendcomponents;
use Yii;
use yiirbacRule;
class ArticleRule extends Rule
{
public $name = 'article';
public function execute($user, $item, $params)
{
// 這里先設置為false,邏輯上后面再完善
return false;
}
}

接著,我們才可以去后臺rule列表(/admin/rule/index)添加rule。具體添加方式可參考下方截圖

查看圖片

注意,上面這一步很多人會死在類名的添加上,記得加上我們ArticleRule文件所在的命名空間!

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

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

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

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

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

class ArticleRule extends Rule
{
public $name = 'article';
/**
* @param string|integer $user 當前登錄用戶的uid
* @param Item $item 所屬規則rule,也就是我們后面要進行的新增規則
* @param array $params 當前請求攜帶的參數. 
* @return true或false.true用戶可訪問 false用戶不可訪問
*/
public function execute($user, $item, $params)
{
$id = isset($params['id']) ? $params['id'] : null;
if (!$id) {
return false;
}
$model = Article::findOne($id);
if (!$model) {
return false;
}
$username = Yii::$app->user->identity->username;
$role = Yii::$app->user->identity->role;
if ($role == User::ROLE_ADMIN || $username == $model->operate) {
return true;
}
return false;
}
}

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

測試步驟如下可做參考:

1.當前用戶創建一篇文章,記得記錄當前文章的創建者,其角色是管理員,我們默認User::ROLE_ADMIN

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

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

以上所述是小編給大家介紹的Yii2 rbac權限控制之rule教程詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對綠夏網網站的支持!



主站蜘蛛池模板: 熊出没免费电影| 失眠咒太神奇了| 绝不放弃电影免费观看完整版| 改病句| 少女戏春潮| cctv6电影节目表| 青春没有遗憾才完美辩论资料| 韩国伦理片在线播放| 成毅壁纸| 艳肉观世音性三级| 出彩中国人撒贝宁精忠报国15分钟| 押韵表实用大全| 抗日电影免费| 特种部队电影全集观看| 周末父母42集剧情介绍| 二年级100个词语| 电影《大突围》| 俺去也电影网| 影视剧分娩片段合集| 刘何娜| 穿上触手内衣被调教堕落| 白色橄榄树啥时候播出| 我们的母亲叫中国读后感| 秃探与俏妞| 女演员大作战| 好妻子电视剧54集剧情| 深流 电视剧| 贵州私人导游| 飞龙猛将演员表| sarah brightman| 幼儿识字入门100字| 护士韩国电影| 阿尔法变频器说明书| 台州林毅| 卧虎藏龙演员名单| 蛇花| 九九九九九九九伊人| 欲孽迷宫电影| 我爱发明鬼畜视频| 戮神| 我的神我要敬拜你歌谱|

!!!站長長期在線接!!!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103