Disclaimer: This article is a blogger original article, follow the CC 4.0 BY-SA copyright agreement, reproduced, please attach the original source link and this statement.
Permissions model
Reference authority model to design their own table
Table Design
In the rights management system generally involves five tables were
1.sys_users user table
2.sys_roles role table
3.sys_permissions authority or resource table
4.sys_users_roles user roles table
5.sys_roles_permissions role permissions table
sys_users user table
CREATE TABLE `sys_users` (
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
`account` varchar(45) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '账号',
`password` varchar(45) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '密码',
`sex` tinyint(1) DEFAULT '0' COMMENT '性别 0男 1女',
`idcard` varchar(225) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '身份证',
`email` varchar(45) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '邮箱',
`phone` varchar(45) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '电话',
`status` tinyint(1) DEFAULT '0' COMMENT '状态(0启用 1冻结 2删除)',
`createtime` datetime DEFAULT NULL COMMENT '用户创建时间',
`lasttime` datetime DEFAULT NULL COMMENT '最后登录时间',
`salt` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '加密盐值',
`roleid` int(225) DEFAULT NULL COMMENT '角色id',
`age` int(3) DEFAULT NULL COMMENT '年龄',
`updatetime` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
sys_roles role table
CREATE TABLE `sys_roles` (
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '角色id',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '角色名称',
`description` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '角色描述',
`pid` bigint(11) DEFAULT NULL COMMENT '父节点,当前角色的上级节点',
`available` tinyint(1) DEFAULT NULL COMMENT '是否锁定(0否 1是)',
`createtime` datetime DEFAULT NULL COMMENT '角色创建时间',
`updatetime` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
sys_permissions privileges or resource table
CREATE TABLE `sys_permissions` (
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '权限id',
`name` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '权限名称',
`description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '权限描述',
`url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '权限访问路径',
`perms` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '权限标识',
`parentid` bigint(11) DEFAULT NULL COMMENT '父级权限id',
`type` tinyint(1) DEFAULT NULL COMMENT '类型 0:目录 1:菜单 2:按钮',
`order` int(3) DEFAULT NULL COMMENT '排序',
`icon` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '图标',
`status` tinyint(1) DEFAULT '0' COMMENT '状态:0有效;1删除',
`createtime` datetime DEFAULT NULL COMMENT '创建时间',
`updatetime` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
sys_users_roles user roles table
CREATE TABLE `sys_users_roles` (
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '用户角色关系表id',
`userid` bigint(11) DEFAULT NULL COMMENT '用户id',
`roleid` bigint(11) DEFAULT NULL COMMENT '角色id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
sys_roles_permissions role privileges resource table
CREATE TABLE `sys_roles_permissions` (
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '角色权限关系表id',
`roleid` bigint(11) DEFAULT NULL COMMENT '角色id',
`permissionid` bigint(11) DEFAULT NULL COMMENT '权限id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DETAILED SUMMARY modified adjusted according to actual business logic.