YII2 RBAC模型原理-表结构介绍

来源:转载

1:角色权限表:CREATE TABLE `auth_item` (`name` varchar(64) COLLATE utf8_unicode_ci NOT NULL,`type` smallint(6) NOT NULL,`description` text COLLATE utf8_unicode_ci,`rule_name` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,`data` blob,`created_at` int(11) DEFAULT NULL,`updated_at` int(11) DEFAULT NULL,PRIMARY KEY (`name`),KEY `rule_name` (`rule_name`),KEY `idx-auth_item-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 COLLATE=utf8_unicode_ci;该表中存储了角色信息和权限信息,其中type=1带表角色type=2带表权限,表中的rule_name是指向rule表中的数据
2:角色权限子集关系:CREATE TABLE `auth_item_child` (`parent` varchar(64) COLLATE utf8_unicode_ci NOT NULL,`child` varchar(64) COLLATE utf8_unicode_ci 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 COLLATE=utf8_unicode_ci;其中角色可以给角色做子集,权限可以给角色做子集,但是权限不能给权限做子集
3:用户角色权限分配表:CREATE TABLE `auth_assignment` (`item_name` varchar(64) COLLATE utf8_unicode_ci NOT NULL,`user_id` varchar(64) COLLATE utf8_unicode_ci 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 COLLATE=utf8_unicode_ci;该表中可以将角色分配给用户,也可以直接讲某个权限分配各用户
4:规则表:CREATE TABLE `auth_rule` (`name` varchar(64) COLLATE utf8_unicode_ci NOT NULL,`data` blob,`created_at` int(11) DEFAULT NULL,`updated_at` int(11) DEFAULT NULL,PRIMARY KEY (`name`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;该表存储的事一个个的规则,一个规则数据是存放的一段代码。 是在执行某个权限方法之前执行的代码,他的作用是再次判断执行此权限的方法

分享给朋友:
您可能感兴趣的文章:
随机阅读: