目的:
避免反复coding ,将此作为一个 component ,任何项目只需复制起表结构和后台代码即可使用,前端样式可根据项目需求做改动,只需调用后台提供的接口即可。
语言:java
数据库:mysql
数据库设计: 一共 5 张表 ,分别是用户表(t_sec_user),角色表(t_sec_role),菜单表(t_sec_menu),用户角色关系表(t_sec_re_user_role) , 角色菜单关系表(t_sec_re_role_menu)。
这里的逻辑主要是 :一个用户能够操作哪些菜单 作为一个‘组' ,'组'在这里的定义是 对菜单而言的 。对用户而言,假设 n个的用户都是很奇怪的 ,他们都想拥有不同的操作菜单。作为开发人员的我们,对于这种想法完全可以不用管。在我们心中 不管用户数量再多,我们都能用一个规则去划分用户类别,在同一个类别的用户 所操作的菜单是一样的 。简单理解 就是 菜单是小兵,角色是军队的头衔 ,用户 就是可以赋予这些头衔的人类。用户能够控制哪些小兵,是要看他是怎样的头衔(角色)。
建表sql 如下:
1 /*
2 Navicat MySQL Data Transfer3
4 Source Server : 127.0.0.1mysql5 Source Server Version : 505196 Source Host : localhost:33067 Source Database : pms8
9 Target Server Type : MYSQL10 Target Server Version : 5051911 File Encoding : 6500112
13 Date: 2017-08-13 00:23:5614 */
15
16 SET FOREIGN_KEY_CHECKS=0;17
18 -- ----------------------------
19 -- Table structure fort_sec_menu20 -- ----------------------------
21 DROP TABLE IF EXISTS `t_sec_menu`;22 CREATE TABLE `t_sec_menu` (23 `id` varchar(128) NOT NULL,24 `name` varchar(128) DEFAULT NULL COMMENT '菜单名',25 `display_name` varchar(128) DEFAULT NULL COMMENT '菜单展示名',26 `router` varchar(1024) DEFAULT NULL COMMENT '前端跳转路由',27 `params` varchar(4096) DEFAULT NULL COMMENT '参数',28 `active` decimal(1,0) DEFAULT NULL COMMENT '是否启用',29 `read_only` decimal(1,0) DEFAULT NULL COMMENT '是否只读 1 只读',30 `parent` varchar(128) DEFAULT NULL COMMENT '父级id',31 `sence` varchar(128) DEFAULT NULL