国产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)
{
// 這里先設置為false,邏輯上后面再完善
return false;
}
}

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

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

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

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

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

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

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

class ArticleRule extends Rule
{
public $name = 'article';
/**
* @param string|integer $user 當前登錄用戶的uid
* @param Item $item 所屬規(guī)則rule,也就是我們后面要進行的新增規(guī)則
* @param array $params 當前請求攜帶的參數(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認證起作用了沒呢?

測試步驟如下可做參考:

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

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

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

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

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的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文件,註解掉變數(shù)$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

隨著網(wǎng)路應用的普及,我們希望能夠在應用程式內(nèi)部實現(xiàn)對資料的保護,以確保敏感資料不會亂用或不被竊取。其中之一的解決方案是使用基於角色的存取控制(RBAC)。基於角色的存取控制(RBAC)是建立在使用者和角色之間的關(guān)係上的一種存取控制模型。該模型的核心思想是將使用者的角色與存取控制操作連結(jié)起來,而不是將存取控制操作直接與使用者連結(jié)。這種方式提高了存取控制的靈活性,

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擴展 怎麼使用YII2框架安裝Redis擴展 May 26, 2023 pm 06:41 PM

1.需要下載yii2-redis的master分支windows版本composer下載2.解壓縮複製到vendor/yiisoft下面3.yiisoft下面extensions.php裡面增加'yiisoft/yii2-redis'=>array('name'=>'yiisoft /yii2-redis','version'=>'2.0.

精選幾道CTF練習,帶你學習yii2框架! 精選幾道CTF練習,帶你學習yii2框架! Feb 23, 2022 am 10:33 AM

本篇文章帶大家了解yii2框架,分享幾個CTF習題,透過它們來學習yii2框架,希望對大家有幫助。

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

隨著互聯(lián)網(wǎng)的不斷發(fā)展和應用的廣泛運用,越來越多的網(wǎng)站和應用程式要求實現(xiàn)存取權(quán)限的控制,以確保敏感資訊和資源的安全性。而隨著專案的不斷發(fā)展和功能的不斷增加,RBAC權(quán)限管理系統(tǒng)已經(jīng)成為了非常流行且成熟的解決方案。在本文中,我們將介紹如何在ThinkPHP6框架中使用RBAC進行權(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應用程式時,鑑權(quán)是一項不可或缺的功能。角色-BasedAccessControl(RBAC)是一種常用的鑑權(quán)模式,它將存取控制以角色為中心進行管理,使權(quán)限的分配更加靈活和易於維護。本文將介紹如何在PHP中實作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允許應用程式保護對資料或資源的訪問,並定義存取控制機制。二、JAAS最新最佳實踐1.使用JAAS進行身份驗證JAAS提供兩種主要的身份驗證方法:基於令牌的身份驗證:此方法使用令牌(例如,使用者名稱和密碼)來驗證使用者身份?;墩J證的身份驗證:此方法使用認證(例如,數(shù)位憑證)來驗證使用者身分。 2

See all articles