国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 后端開發(fā) php教程 Yii2 rbac權(quán)限控制之rule教程詳解_php實例

Yii2 rbac權(quán)限控制之rule教程詳解_php實例

Jul 06, 2016 pm 01:32 PM
rbac rbac權(quán)限控制 yii2

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

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

對于一般的權(quán)限系統(tǒng)而言,我們之前做的rbac一般情況下是足夠的,即時沒有rule,相信你也能實現(xiàn)我們用rule實現(xiàn)的功能。

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

看需求:

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

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

在我們添加rule之前,需要先實現(xiàn) yii\rbac\Rule類的execute方法。

<&#63;php
namespace backend\components;
use Yii;
use yii\rbac\Rule;
class ArticleRule extends Rule
{
public $name = 'article';
public function execute($user, $item, $params)
{
// 這里先設(shè)置為false,邏輯上后面再完善
return false;
}
}

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

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

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

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

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

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

然后我們實現(xiàn)ArticleRule::execute方法內(nèi)業(yè)務(wù)邏輯,可參考如下:

class ArticleRule extends Rule
{
public $name = 'article';
/**
* @param string|integer $user 當(dāng)前登錄用戶的uid
* @param Item $item 所屬規(guī)則rule,也就是我們后面要進(jìn)行的新增規(guī)則
* @param array $params 當(dāng)前請求攜帶的參數(shù). 
* @return true或false.true用戶可訪問 false用戶不可訪問
*/
public function execute($user, $item, $params)
{
$id = isset($params['id']) &#63; $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;
}
}

最后就是驗證了,到底我們所實現(xiàn)的rule認(rèn)證起作用了沒呢?

測試步驟如下可做參考:

1.當(dāng)前用戶創(chuàng)建一篇文章,記得記錄當(dāng)前文章的創(chuàng)建者,其角色是管理員,我們默認(rèn)User::ROLE_ADMIN

2.創(chuàng)建一個普通用戶,且也創(chuàng)建一篇文章,同時也需要記錄當(dāng)前文章的創(chuàng)建者

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

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

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

yii2 怎么去掉jquery yii2 怎么去掉jquery Feb 17, 2023 am 09:55 AM

yii2去掉jquery的方法:1、編輯AppAsset.php文件,注釋掉變量$depends里的“yii\web\YiiAsset”值;2、編輯main.php文件,在字段“components”下面添加配置為“'yii\web\JqueryAsset' => ['js' => [],'sourcePath' => null,],”即可去掉jquery腳本。

實現(xiàn)基于角色的訪問控制(RBAC):使用PHP和RBAC 實現(xiàn)基于角色的訪問控制(RBAC):使用PHP和RBAC Jun 20, 2023 pm 10:39 PM

隨著互聯(lián)網(wǎng)應(yīng)用的普及,我們希望能夠在應(yīng)用程序內(nèi)部實現(xiàn)對數(shù)據(jù)的保護(hù),以保證敏感數(shù)據(jù)不亂用或不被竊取。其中之一的解決方案是使用基于角色的訪問控制(RBAC)。基于角色的訪問控制(RBAC)是建立在用戶和角色之間的關(guān)系上的一種訪問控制模型。該模型的核心思想是將用戶的角色與訪問控制操作聯(lián)系起來,而不是將訪問控制操作直接與用戶聯(lián)系起來。這種方式提高了訪問控制的靈活性,

yii2怎么顯示錯誤提示 yii2怎么顯示錯誤提示 Apr 18, 2025 pm 11:09 PM

在 Yii2 中,顯示錯誤提示有兩種主要方法。一種是使用 Yii::$app-&amp;gt;errorHandler-&amp;gt;exception(),在異常發(fā)生時自動捕獲和顯示錯誤。另一種是使用 $this-&amp;gt;addError(),在模型驗證失敗時顯示錯誤,并可以在視圖中通過 $model-&amp;gt;getErrors() 訪問。視圖中,可以用 if ($errors = $model-&amp;gt;getErrors())

怎么使用YII2框架安裝Redis擴(kuò)展 怎么使用YII2框架安裝Redis擴(kuò)展 May 26, 2023 pm 06:41 PM

1.需要下載yii2-redis的master分支windows版本composer下載2.解壓復(fù)制到vendor/yiisoft下面3.yiisoft下面extensions.php里面增加'yiisoft/yii2-redis'=>array('name'=>'yiisoft/yii2-redis','version'=>'2.0.

精選幾道CTF習(xí)題,帶你學(xué)習(xí)yii2框架! 精選幾道CTF習(xí)題,帶你學(xué)習(xí)yii2框架! Feb 23, 2022 am 10:33 AM

本篇文章帶大家了解yii2框架,分享幾道CTF習(xí)題,通過它們來學(xué)習(xí)yii2框架,希望對大家有所幫助。

ThinkPHP6中如何進(jìn)行RBAC權(quán)限管理? ThinkPHP6中如何進(jìn)行RBAC權(quán)限管理? Jun 12, 2023 am 08:10 AM

隨著互聯(lián)網(wǎng)的不斷發(fā)展和應(yīng)用的廣泛運(yùn)用,越來越多的網(wǎng)站和應(yīng)用程序要求實現(xiàn)訪問權(quán)限的控制,以確保敏感信息和資源的安全性。而隨著項目的不斷發(fā)展和功能的不斷增加,RBAC權(quán)限管理系統(tǒng)已經(jīng)成為了一種非常流行和成熟的解決方案。在本文中,我們將介紹如何在ThinkPHP6框架中使用RBAC進(jìn)行權(quán)限管理。什么是RBAC權(quán)限管理?RBAC(Role-BasedAccess

掌握PHP中的角色-Based Access Control(RBAC)鑒權(quán) 掌握PHP中的角色-Based Access Control(RBAC)鑒權(quán) Aug 07, 2023 pm 03:39 PM

掌握PHP中的角色-BasedAccessControl(RBAC)鑒權(quán)引言:在開發(fā)Web應(yīng)用程序時,鑒權(quán)是一項必不可少的功能。角色-BasedAccessControl(RBAC)是一種常用的鑒權(quán)模式,它將訪問控制以角色為中心進(jìn)行管理,使權(quán)限的分配更加靈活和易于維護(hù)。本文將介紹如何在PHP中實現(xiàn)RBAC鑒權(quán),并提供相關(guān)代碼示例。一、RBAC概述角色

Java JAAS 的最新最佳實踐 Java JAAS 的最新最佳實踐 Feb 23, 2024 pm 10:52 PM

一、JAAS概述JavaJAAS(JavaAuthenticationandAuthorizationService)是一個用于多系統(tǒng)單點登錄(SSO)集成、基于角色的訪問控制(RBAC)和授權(quán)管理的框架。JAAS允許應(yīng)用程序保護(hù)對數(shù)據(jù)或資源的訪問,并定義訪問控制機(jī)制。二、JAAS最新最佳實踐1.使用JAAS進(jìn)行身份驗證JAAS提供兩種主要的身份驗證方法:基于令牌的身份驗證:此方法使用令牌(例如,用戶名和密碼)來驗證用戶身份。基于認(rèn)證的身份驗證:此方法使用認(rèn)證(例如,數(shù)字證書)來驗證用戶身份。2

See all articles