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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

熱門話題

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

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

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

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

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

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

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

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