分享

mysql 标准权限表结构设计

 lihuimail 2017-10-30

话不多说,直接入正题。

现在的互联网应用几乎都会有一个或者多个管理后台,那么如果正确,准确的分配不同角色权限呢,这就需要一个统一的权限分配管理系统,这个系统可以管理多个不同的应用后台,管理不同的人的不同系统下的不同角色权限,精准的控制到每一个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 '用户角色表';

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约