国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

Yii2 rbac權限控制之rule教程詳解

2020-03-22 17:46:58
字體:
來源:轉載
供稿:網友
在我們之前Yii2搭建后臺并實現rbac權限控制完整實例教程中,不知道你曾經疑惑過沒有一個問題,rule表是做什么的,為什么在整個過程中我們都沒有涉及到這張表?相信我不說,部分人也都會去嘗試,或百度或google,到頭來也會竹籃打水,這部分講解的內容少之又少啊!對于一般的權限系統而言,我們之前做的rbac一般情況下是足夠的,即時沒有rule,相信你也能實現我們用rule實現的功能。我們就以網址的例子給出一個具體的操作教程,看看這個神秘的rule到底是做什么的!看需求:我們有管理員和普通用戶,對于文章系統而言,我們允許管理員對文章的任何操作,但是只允許普通用戶創建文章和修改自己創建的文章,注意哦,是允許其修改自己創建的文章,不是不允許修改文章,也不是修改所有的文章!看yii2 rbac rule怎么去實現,重點是教大家怎么去使用這個rule,也解開眾多人心中的節!在我們添加rule之前,需要先實現 yii/rbac/Rule類的execute方法。namespace backend/components;use Yii;use yii/rbac/Rule;html' target='_blank'>class ArticleRule extends Rulepublic $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 Rulepublic $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教程詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對phpstudy網站的支持!PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 涿鹿县| 松滋市| 兰溪市| 孙吴县| 根河市| 浮梁县| 若羌县| 石柱| 千阳县| 南宁市| 牙克石市| 且末县| 新和县| 灯塔市| 鄂尔多斯市| 怀仁县| 北川| 崇左市| 于都县| 建昌县| 伽师县| 北票市| 来凤县| 江城| 云安县| 深水埗区| 万山特区| 镇江市| 黄梅县| 大邑县| 武川县| 溧水县| 泗洪县| 抚松县| 策勒县| 咸阳市| 沧源| 望都县| 民权县| 桃园县| 阜新市|