在开发后台管理系统的时候,例如OA系统,绩效系统,crm客户关系管理系统,都会存在用户权限划分的问题。该文章描述了角色的定义,以及权限的划分等含义。如下图所示:
- user和user_basicinfo:记录用户资料。
- role:角色表,记录公司各种角色,比如:管理员,销售,销售主管,开发,开发经理等
- permission:菜单表,记录系统的菜单栏目和页面上的按钮(例如:绩效管理,会议管理,新增绩效,预约会议),包括url和code等信息。
- role_permission:角色权限表,记录某个角色有多少个菜单。一个角色对应多个菜单,菜单不可重复。
- user_role:用户角色表,用户可拥有多个角色。
一.建表脚本
CREATE TABLE `permission` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`PID` int(11) DEFAULT NULL COMMENT '父节点名称',
`NAME` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '名称',
`TYPE` varchar(20) COLLATE utf8_bin DEFAULT NULL COMMENT '类型:菜单or功能',
`SORT` int(11) DEFAULT NULL COMMENT '排序',
`URL` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '菜单URL',
`PERM_CODE` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '菜单编码',
`ICON` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '图标',
`STATE` varchar(10) COLLATE utf8_bin DEFAULT NULL,
`DESCRIPTION` varchar(200) COLLATE utf8_bin DEFAULT NULL,
`CATEGORY_ID` bigint(20) DEFAULT NULL COMMENT '导航ID',
`ICON_URL` varchar(200) COLLATE utf8_bin DEFAULT NULL COMMENT '图标的URL',
`IS_VALID` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0 有效 1 无效',
`DOMAIN_ID` int(11) DEFAULT NULL COMMENT '来源系统ID',
PRIMARY KEY (`ID`),
KEY `idx_pid` (`PID`)
) ENGINE=InnoDB AUTO_INCREMENT=177 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='菜单';
CREATE TABLE `role` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`NAME&