首页 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.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
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 18, 2025 pm 04:41 PM

YII的内置测试框架可以通过Phpunit集成,灯具管理以及对各种测试类型的支持,改善代码质量和开发实践等功能,从而增强了应用测试。

监视和分析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和Websocket的实时数据同步? 如何实现与YII和Websocket的实时数据同步? Mar 18, 2025 pm 04:34 PM

本文讨论了使用YII和Websocket实施实时数据同步,涵盖了设置,集成以及绩效和安全性的最佳实践。

在生产中部署YII应用程序的主要考虑因素是什么? 在生产中部署YII应用程序的主要考虑因素是什么? Mar 17, 2025 pm 01:58 PM

本文讨论了在生产中部署YII应用程序的关键注意事项,重点是环境设置,配置管理,绩效优化,安全性,日志记录,监视,部署策略和备份/恢复计划。

使用YII构建SaaS应用程序的主要好处是什么? 使用YII构建SaaS应用程序的主要好处是什么? Mar 18, 2025 pm 04:25 PM

本文讨论了YII对SaaS开发的好处,专注于绩效,安全性和快速开发功能,以提高可扩展性并缩短市场时间。

See all articles