今天,总结一下,RBAC(基于角色的访问控制),直白一点,就是权限管理。说到这,不得不“小叙”一下,我第一次node
开发权限管理功能的“插曲”。第一次作这个,真的不会,我只知道“有点印象”,当时任务落到个人身上,主管也是说个视频
大概,至于“大概”是什么,基本能够忽略不计,无法,没有参考,只有处处找资料,翻资料,后来仍是我在网上找到了开发
相关的视频,(说到技术视频,我不得不说,就算下载不少的视频,别人就算讲的再好,不必定挪到你那里就好使,rem
就比如,说与作是两码事同样,别人讲视频实际上是加深别人对知识点的理解,跟咋们听众盆友冒油半毛钱的关系,惟有it
下功夫,反复敲打键盘,作到熟练,至于生巧,那又是另外一重境界。),呵呵呵,我是幸运的,按照视频的讲解,基本上,module
“copy”过来,还算顺利,固然,中间也有一点“坑”,最后仍是趟过了。权限
说到RBAC,不得不说的五个表:用户表(user),用户角色表(role_user),角色表(role),节点表(node),权限表(access)下载
其中的关系是, 从这个图表中,咱们不难看出它们之间的联系。im
用户角色表是用户表与角色表产生交集的关联表,权限表也称节点角色表,它是角色表与节点表关联的表。技术
好的,先认识一下这些表的表结构:
/*-- --------------------------------------------------------CREATE TABLE IF NOT EXISTS `think_access` ( `role_id` smallint(6) unsigned NOT NULL, `node_id` smallint(6) unsigned NOT NULL, `level` tinyint(1) NOT NULL, `module` varchar(50) DEFAULT NULL, KEY `groupId` (`role_id`), KEY `nodeId` (`node_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;CREATE TABLE IF NOT EXISTS `think_node` ( `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `title` varchar(50) DEFAULT NULL, `status` tinyint(1) DEFAULT '0', `remark` varchar(255) DEFAULT NULL, `sort` smallint(6) unsigned DEFAULT NULL, `pid` smallint(6) unsigned NOT NULL, `level` tinyint(1) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `level` (`level`), KEY `pid` (`pid`), KEY `status` (`status`), KEY `name` (`name`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;CREATE TABLE IF NOT EXISTS `think_role` ( `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `pid` smallint(6) DEFAULT NULL, `status` tinyint(1) unsigned DEFAULT NULL, `remark` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), KEY `pid` (`pid`), KEY `status` (`status`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;CREATE TABLE IF NOT EXISTS `think_role_user` ( `role_id` mediumint(9) unsigned DEFAULT NULL, `user_id` char(32) DEFAULT NULL, KEY `group_id` (`role_id`), KEY `user_id` (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;*/