Rumah rangka kerja 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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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='权限规则表';
Salin selepas log masuk

Atas ialah kandungan terperinci yii2怎么实现rbac. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah amalan terbaik untuk menggunakan YII dalam persekitaran awan asli? Apakah amalan terbaik untuk menggunakan YII dalam persekitaran awan asli? Mar 18, 2025 pm 04:39 PM

Artikel ini membincangkan amalan terbaik untuk menggunakan aplikasi YII dalam persekitaran awan asli, yang memberi tumpuan kepada skalabiliti, kebolehpercayaan, dan kecekapan melalui kontena, orkestra, dan langkah-langkah keselamatan.

Apakah pertimbangan utama untuk menggunakan YII dalam seni bina tanpa pelayan? Apakah pertimbangan utama untuk menggunakan YII dalam seni bina tanpa pelayan? Mar 18, 2025 pm 04:33 PM

Artikel ini membincangkan pertimbangan utama untuk menggunakan YII dalam seni bina tanpa pelayan, yang memberi tumpuan kepada ketiadaan, permulaan sejuk, saiz fungsi, interaksi pangkalan data, keselamatan, dan pemantauan. Ia juga meliputi strategi pengoptimuman dan potensi integrasi

Apakah strategi terbaik untuk menguji aplikasi YII dengan codeception? Apakah strategi terbaik untuk menguji aplikasi YII dengan codeception? Mar 18, 2025 pm 04:27 PM

Artikel ini membincangkan strategi untuk menguji aplikasi YII menggunakan codeception, yang memberi tumpuan kepada menggunakan modul terbina dalam, BDD, jenis ujian yang berbeza, mengejek, integrasi CI, dan liputan kod.

Apakah alat terbaik untuk memantau dan memanfaatkan prestasi aplikasi YII? Apakah alat terbaik untuk memantau dan memanfaatkan prestasi aplikasi YII? Mar 17, 2025 pm 01:52 PM

Artikel ini membincangkan alat untuk memantau dan memanfaatkan prestasi aplikasi YII, termasuk bar alat Debug Yii, Blackfire, New Relic, XDebug, dan penyelesaian APM seperti Datadog dan Dynatrace.

Apakah ciri-ciri utama rangka kerja ujian terbina dalam Yii? Apakah ciri-ciri utama rangka kerja ujian terbina dalam Yii? Mar 18, 2025 pm 04:41 PM

Rangka kerja ujian terbina dalam YII meningkatkan ujian aplikasi dengan ciri-ciri seperti integrasi phpunit, pengurusan perlawanan, dan sokongan untuk pelbagai jenis ujian, meningkatkan kualiti kod dan amalan pembangunan.

Bagaimana untuk melaksanakan penyegerakan data masa nyata dengan YII dan WebSockets? Bagaimana untuk melaksanakan penyegerakan data masa nyata dengan YII dan WebSockets? Mar 18, 2025 pm 04:34 PM

Artikel ini membincangkan pelaksanaan penyegerakan data masa nyata menggunakan YII dan WebSockets, meliputi persediaan, integrasi, dan amalan terbaik untuk prestasi dan keselamatan.

Apakah pertimbangan utama untuk menggunakan aplikasi YII dalam pengeluaran? Apakah pertimbangan utama untuk menggunakan aplikasi YII dalam pengeluaran? Mar 17, 2025 pm 01:58 PM

Artikel ini membincangkan pertimbangan utama untuk menggunakan aplikasi YII dalam pengeluaran, yang memberi tumpuan kepada persediaan persekitaran, pengurusan konfigurasi, pengoptimuman prestasi, keselamatan, pembalakan, pemantauan, strategi penempatan, dan rancangan sandaran/pemulihan.

Apakah faedah utama menggunakan YII untuk membina aplikasi SaaS? Apakah faedah utama menggunakan YII untuk membina aplikasi SaaS? Mar 18, 2025 pm 04:25 PM

Artikel ini membincangkan manfaat Yii untuk pembangunan SaaS, memberi tumpuan kepada prestasi, keselamatan, dan ciri-ciri pembangunan pesat untuk meningkatkan skalabilitas dan mengurangkan masa ke pasaran.

See all articles