首頁 php框架 YII yii2怎麼實作rbac

yii2怎麼實作rbac

Dec 30, 2019 am 09:42 AM
yii2

yii2怎麼實作rbac

RBAC(Role-Based Access Control )基於角色的存取控制。

1.基本概念:在使用者和存取權限之間引入角色的概念,將使用者和角色連結起來,透過對角色的授權來控制使用者對系統資源的訪問,相對傳統存取控制引入角色極大地簡化了權限的管理。                               (建議學習:yii架構中

#1).角色:可理解為某數量的權限的集合,而權限的載體。例如:一個論壇系統,「超級管理員」、「版主」都是角色。

2).權限:版主可管理版內的貼文、可管理版內的使用者等,這些是權限。 

Yii2中對rbac的實作

1.Yii2實作了通用的分層的RBAC,遵循的模型也是NIST RBAC model。

2.在yii2中增加了rule規則的概念,rule是什麼鬼呢?

舉個栗子:對於文章系統而言,我們有管理員和普通用戶,允許管理員對文章的任何操作,但是只允許普通用戶創建文章和修改自己創建的文章,也就是說一般使用者是有修改文章的權限的,但是額加的限制條件是只能修改自己的文章,這個額加的驗證工作就是rule規則所要負責的事情。

3.yii2的權限管理實作支援檔案和db兩個載體,基於db實作方式的核心是四個資料表:

1)儲存角色或權限的表格:auth_item (type:1表示角色;2表示權限)

CREATE TABLE `auth_item` (
`name` varchar(64) NOT NULL,
`type` int(11) NOT NULL,
`description` text,
`rule_name` varchar(64) DEFAULT NULL,
`data` text,
`created_at` int(11) DEFAULT NULL,
`updated_at` int(11) DEFAULT NULL,
PRIMARY KEY (`name`),
KEY `rule_name` (`rule_name`),
KEY `type` (`type`),
CONSTRAINT `auth_item_ibfk_1` FOREIGN KEY (`rule_name`) REFERENCES `auth_rule` (`name`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
登入後複製

2) 權限和角色的上下級關聯表:auth_item_child

#(包含關係:角色可以包含角色、角色可以包含權限、權限可以包含權限,但權限不可包含角色)

CREATE TABLE `auth_item_child` (
`parent` varchar(64) NOT NULL,
`child` varchar(64) NOT NULL,
PRIMARY KEY (`parent`,`child`),
KEY `child` (`child`),
CONSTRAINT `auth_item_child_ibfk_1` FOREIGN KEY (`parent`) REFERENCES `auth_item` (`name`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `auth_item_child_ibfk_2` FOREIGN KEY (`child`) REFERENCES `auth_item` (`name`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
登入後複製

3)使用者與權限(角色)的指派表:auth_assignment

#
CREATE TABLE `auth_assignment` (
`item_name` varchar(64) NOT NULL,
`user_id` varchar(64) NOT NULL,
`created_at` int(11) DEFAULT NULL,
PRIMARY KEY (`item_name`,`user_id`),
CONSTRAINT `auth_assignment_ibfk_1` FOREIGN KEY (`item_name`) REFERENCES `auth_item` (`name`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
登入後複製

4)規則表:auth_rule

CREATE TABLE `auth_rule` (  
  `name` varchar(64) NOT NULL,  
  `data` text,  //存的是一个序列化的实现了yii\rbac\Rule接口的类的一个对象实例
  `created_at` int(11) DEFAULT NULL,  
  `updated_at` int(11) DEFAULT NULL,  
  PRIMARY KEY (`name`),  
  KEY `name` (`name`),  
  KEY `created_at` (`created_at`),  
  KEY `updated_at` (`updated_at`)  
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限规则表';
登入後複製

以上是yii2怎麼實作rbac的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在雲本地環境中使用YII的最佳實踐是什麼? 在雲本地環境中使用YII的最佳實踐是什麼? Mar 18, 2025 pm 04:39 PM

本文討論了在雲本地環境中部署YII應用程序的最佳實踐,並通過集裝,編排和安全措施專注於可擴展性,可靠性和效率。

在無服務器體系結構中使用YII的關鍵注意事項是什麼? 在無服務器體系結構中使用YII的關鍵注意事項是什麼? Mar 18, 2025 pm 04:33 PM

本文討論了在無服務器體系結構中使用YII的關鍵注意事項,專注於無狀態,冷啟動,功能大小,數據庫交互,安全性和監視。它還涵蓋優化策略和潛在的綜合

監視和分析YII應用程序性能的最佳工具是什麼? 監視和分析YII應用程序性能的最佳工具是什麼? Mar 17, 2025 pm 01:52 PM

本文討論了用於監視和分析YII應用程序性能的工具,包括YII調試工具欄,Blackfire,New Relic,Xdebug和APM解決方案(如Datadog和Dynatrace)。

用編碼對測試YII應用程序的最佳策略是什麼? 用編碼對測試YII應用程序的最佳策略是什麼? Mar 18, 2025 pm 04:27 PM

本文討論了使用編碼感應測試YII應用程序的策略,重點是使用內置模塊,BDD,不同的測試類型,模擬,CI集成和代碼覆蓋範圍。

YII內置測試框架的主要功能是什麼? YII內置測試框架的主要功能是什麼? Mar 18, 2025 pm 04:41 PM

YII的內置測試框架可以通過Phpunit集成,燈具管理以及對各種測試類型的支持,改善代碼質量和開發實踐等功能,從而增強了應用測試。

如何實現與YII和Websocket的實時數據同步? 如何實現與YII和Websocket的實時數據同步? Mar 18, 2025 pm 04:34 PM

本文討論了使用YII和Websocket實施實時數據同步,涵蓋了設置,集成以及績效和安全性的最佳實踐。

使用YII構建SaaS應用程序的主要好處是什麼? 使用YII構建SaaS應用程序的主要好處是什麼? Mar 18, 2025 pm 04:25 PM

本文討論了YII對SaaS開發的好處,專注於績效,安全性和快速開發功能,以提高可擴展性並縮短市場時間。

在生產中部署YII應用程序的主要考慮因素是什麼? 在生產中部署YII應用程序的主要考慮因素是什麼? Mar 17, 2025 pm 01:58 PM

本文討論了在生產中部署YII應用程序的關鍵注意事項,重點是環境設置,配置管理,績效優化,安全性,日誌記錄,監視,部署策略和備份/恢復計劃。

See all articles