话不多说,直接入正题。 现在的互联网应用几乎都会有一个或者多个管理后台,那么如果正确,准确的分配不同角色权限呢,这就需要一个统一的权限分配管理系统,这个系统可以管理多个不同的应用后台,管理不同的人的不同系统下的不同角色权限,精准的控制到每一个action,而不是粗略的control。 下面是我最近在做的一个权限系统所设计的表结构。希望对大家有所帮助。 主要思想: 1)用户管理表 2)角色表 3)权限节点表 4)用户和角色表 5)角色和权限表 下面的表结构能够适合绝大多数的应用权限管理系统。 # 节点
CREATE TABLE `tblRbacNode` (
`node_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`node_name` varchar(100) DEFAULT '' COMMENT '节点action',
`node_url` varchar(100) DEFAULT '' COMMENT '节点 url',
`title` varchar(100) DEFAULT '' COMMENT '节点名称',
`deleted` tinyint(4) DEFAULT 0 COMMENT '0展示 1隐藏',
`sort` int(10) unsigned DEFAULT 0 COMMENT '排序',
`parent_id` int(10) unsigned DEFAULT 0 COMMENT '父节点',
`level` tinyint(4) unsigned DEFAULT 0 COMMENT '1应用 2控制器 3action',
`app_type` tinyint(4) NOT NULL DEFAULT 0 COMMENT '应用',
`app_name` varchar(100) DEFAULT '' COMMENT '应用名称',
`is_tab` tinyint(4) NOT NULL DEFAULT 0 COMMENT '1 侧边栏 0 页面节点',
`create_time` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_time` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '更新时间',
`operator_uid` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '操作人uid',
`operator` varchar(100) NOT NULL DEFAULT '' COMMENT '操作人',
`ext_data` varchar(5000) NOT NULL DEFAULT '' COMMENT '扩展属性json',
PRIMARY KEY (`node_id`),
KEY `level` (`level`),
KEY `parent_id` (`parent_id`),
KEY `node_name` (`node_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '节点表';
CREATE TABLE `tblRbacRole` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`role_id` int(10) unsigned COMMENT '角色id 自10000起',
`role_name` varchar(1000) NOT NULL COMMENT '角色名',
`parent_id` int(10) unsigned DEFAULT 0 COMMENT '父节点',
`deleted` tinyint(4) DEFAULT 0 COMMENT '删除',
`app_type` tinyint(4) NOT NULL DEFAULT 0 COMMENT '应用',
`create_time` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_time` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '更新时间',
`operator_uid` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '操作人uid',
`operator` varchar(100) NOT NULL DEFAULT '' COMMENT '操作人',
`ext_data` varchar(5000) NOT NULL DEFAULT '' COMMENT '扩展属性json',
PRIMARY KEY (`id`),
KEY `role_id` (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '角色群组表';
CREATE TABLE `tblRbacAccess` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`role_id` int(10) unsigned NOT NULL COMMENT '角色id',
`node_id` int(10) unsigned NOT NULL COMMENT '节点id',
`deleted` tinyint(4) DEFAULT 0 COMMENT '删除',
`app_type` tinyint(4) NOT NULL DEFAULT 0 COMMENT '应用',
`create_time` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_time` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '更新时间',
`operator_uid` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '操作人uid',
`operator` varchar(100) NOT NULL DEFAULT '' COMMENT '操作人',
`ext_data` varchar(5000) NOT NULL DEFAULT '' COMMENT '扩展属性json',
PRIMARY KEY (`id`),
KEY `role_id` (`role_id`),
KEY `node_id` (`node_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '权限表';
CREATE TABLE `tblRbacUser` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` bigint(20) NOT NULL DEFAULT 0 COMMENT '用户id',
`deleted` tinyint(4) DEFAULT 0 COMMENT '删除',
`app_type` tinyint(4) NOT NULL DEFAULT 0 COMMENT '应用',
`create_time` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_time` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '更新时间',
`operator_uid` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '操作人uid',
`operator` varchar(100) NOT NULL DEFAULT '' COMMENT '操作人',
`ext_data` varchar(5000) NOT NULL DEFAULT '' COMMENT '扩展属性json',
PRIMARY KEY (`id`),
KEY `uid` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '用户表';
CREATE TABLE `tblRbacRoleUser` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`role_id` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '角色id',
`uid` bigint(20) NOT NULL DEFAULT 0 COMMENT '用户id',
`deleted` tinyint(4) DEFAULT 0 COMMENT '删除',
`app_type` tinyint(4) NOT NULL DEFAULT 0 COMMENT '应用,
`create_time` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_time` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '更新时间',
`operator_uid` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '操作人uid',
`operator` varchar(100) NOT NULL DEFAULT '' COMMENT '操作人',
`ext_data` varchar(5000) NOT NULL DEFAULT '' COMMENT '扩展属性json',
PRIMARY KEY (`id`),
KEY `role_id` (`role_id`),
KEY `uid` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '用户角色表'; |
|