旗下导航:搜·么
当前位置:网站首页 > PHP框架 > YII > 正文

yii2怎样完成rbac【yii框架教程】,yii2

作者:搜搜PHP网发布时间:2019-12-30分类:YII浏览:69


导读:RBAC(Role-BasedAccessControl)基于角色的接见掌握。1.基本思想:在用户和接见权限之间引入角色的观点,将用户和角色联系起来,经由过程对角...

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的细致内容,更多请关注ki4网别的相干文章!

标签:yii2