权限管理系统(三):自定义开发一套权限管理系统

为什么需要自己写?

  1. 使用框架必须按照框架的要求进行配置。
  2. 没有界面操作和查看。
  3. 期望更细致的管理。

什么样的权限管理系统比较好?

  1. 基于扩展的RBAC实现。
  2. 易于扩展,能灵活适应需求的变化。
  3. 所有管理都有界面进行操作。

数据库表结构设计

这边使用的是mysql数据库。

 

 

/*
Navicat MySQL Data Transfer

Source Server         : 本地
Source Server Version : 50611
Source Host           : 127.0.0.1:3306
Source Database       : rbac-test

Target Server Type    : MYSQL
Target Server Version : 50611
File Encoding         : 65001

Date: 2017-11-20 14:51:34
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for t_acl
-- ----------------------------
DROP TABLE IF EXISTS `t_acl`;
CREATE TABLE `t_acl` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `code` varchar(20) NOT NULL COMMENT '权限码',
  `aname` varchar(25) NOT NULL,
  `acl_module_id` int(11) NOT NULL,
  `url` varchar(110) NOT NULL COMMENT '请求的url,可以填正则表达式',
  `type` int(11) NOT NULL DEFAULT '1' COMMENT '类型(1菜单 2按钮 3其它)',
  `isactive` int(11) NOT NULL DEFAULT '1' COMMENT '状态(0未启用 1启用)',
  `seq` int(11) NOT NULL COMMENT '权限在权限模块中的排序',
  `remark` varchar(54) DEFAULT NULL,
  `operator` varchar(20) DEFAULT NULL,
  `operate_time` datetime DEFAULT NULL,
  `operate_ip` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_acl_module_id` (`acl_module_id`),
  CONSTRAINT `fk_acl_module_id` FOREIGN KEY (`acl_module_id`) REFERENCES `t_sys_acl_module` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for t_role
-- ----------------------------
DROP TABLE IF EXISTS `t_role`;
CREATE TABLE `t_role` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `rname` varchar(25) NOT NULL,
  `type` int(11) NOT NULL DEFAULT '1' COMMENT '类型(0管理员 1检验员 2科室主任 3审核员 4打印员 5申报员 6其它)',
  `isactive` int(11) NOT NULL DEFAULT '1' COMMENT '状态(0未启用 1启用)',
  `remark` varchar(54) DEFAULT NULL,
  `operator` varchar(20) DEFAULT NULL,
  `operate_time` datetime DEFAULT NULL,
  `operate_ip` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for t_sys_acl_module
-- ----------------------------
DROP TABLE IF EXISTS `t_sys_acl_module`;
CREATE TABLE `t_sys_acl_module` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `amname` varchar(25) NOT NULL,
  `level` int(11) NOT NULL COMMENT '层级',
  `seq` int(11) NOT NULL COMMENT '排序',
  `remark` varchar(25) DEFAULT NULL,
  `parent_id` int(11) DEFAULT NULL,
  `operator` varchar(25) DEFAULT NULL,
  `operate_time` datetime DEFAULT NULL,
  `operate_ip` varchar(25) DEFAULT NULL,
  `isactive` int(11) DEFAULT '1' COMMENT '状态(0未启用 1启用)',
  PRIMARY KEY (`id`),
  KEY `fk_parent_id1` (`parent_id`),
  CONSTRAINT `fk_parent_id1` FOREIGN KEY (`parent_id`) REFERENCES `t_sys_acl_module` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for t_sys_dep
-- ----------------------------
DROP TABLE IF EXISTS `t_sys_dep`;
CREATE TABLE `t_sys_dep` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `dname` varchar(25) NOT NULL,
  `level` int(11) NOT NULL COMMENT '层级',
  `seq` int(11) NOT NULL COMMENT '排序',
  `remark` varchar(25) DEFAULT NULL,
  `parent_id` int(11) DEFAULT NULL,
  `operator` varchar(25) DEFAULT NULL,
  `operate_time` datetime DEFAULT NULL,
  `operate_ip` varchar(25) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_parent_id` (`parent_id`),
  CONSTRAINT `fk_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `t_sys_dep` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for t_sys_log
-- ----------------------------
DROP TABLE IF EXISTS `t_sys_log`;
CREATE TABLE `t_sys_log` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type` int(11) NOT NULL DEFAULT '0' COMMENT '权限更新的类型(1部门 2用户 3权限模块 4权限 5角色 6角色用户关系 7角色权限关系)',
  `target_id` int(25) NOT NULL COMMENT '基于type后指定的对象id,比如用户、角色、权限等表的主键',
  `old_value` text,
  `new_value` text,
  `isactive` int(11) NOT NULL DEFAULT '1' COMMENT '状态(0未启用 1启用)',
  `operator` varchar(20) DEFAULT NULL,
  `operate_time` datetime DEFAULT NULL,
  `operate_ip` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for t_sys_role_acl_rel
-- ----------------------------
DROP TABLE IF EXISTS `t_sys_role_acl_rel`;
CREATE TABLE `t_sys_role_acl_rel` (
  `id` int(30) NOT NULL AUTO_INCREMENT,
  `role_id` int(25) NOT NULL,
  `acl_id` int(12) DEFAULT NULL,
  `isactive` int(11) NOT NULL DEFAULT '1' COMMENT '状态(0未启用 1启用)',
  `operator` varchar(25) DEFAULT NULL,
  `operate_time` datetime DEFAULT NULL,
  `operate_ip` varchar(25) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_role_id1` (`role_id`),
  KEY `fk_acl_id` (`acl_id`),
  CONSTRAINT `fk_acl_id` FOREIGN KEY (`acl_id`) REFERENCES `t_acl` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_role_id1` FOREIGN KEY (`role_id`) REFERENCES `t_role` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for t_sys_user
-- ----------------------------
DROP TABLE IF EXISTS `t_sys_user`;
CREATE TABLE `t_sys_user` (
  `id` int(30) NOT NULL AUTO_INCREMENT,
  `username` varchar(25) NOT NULL,
  `telphone` varchar(12) DEFAULT NULL,
  `mail` varchar(18) DEFAULT NULL,
  `password` varchar(10) NOT NULL,
  `remark` varchar(25) DEFAULT NULL,
  `dep_id` int(11) DEFAULT NULL,
  `isactive` int(11) NOT NULL DEFAULT '1' COMMENT '状态(0未启用 1启用)',
  `operator` varchar(25) DEFAULT NULL,
  `operate_time` datetime DEFAULT NULL,
  `operate_ip` varchar(25) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_dep_id` (`dep_id`),
  CONSTRAINT `fk_dep_id` FOREIGN KEY (`dep_id`) REFERENCES `t_sys_dep` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for t_sys_user_role_rel
-- ----------------------------
DROP TABLE IF EXISTS `t_sys_user_role_rel`;
CREATE TABLE `t_sys_user_role_rel` (
  `id` int(30) NOT NULL AUTO_INCREMENT,
  `role_id` int(25) NOT NULL,
  `user_id` int(12) DEFAULT NULL,
  `isactive` int(11) NOT NULL DEFAULT '1' COMMENT '状态(0未启用 1启用)',
  `operator` varchar(25) DEFAULT NULL,
  `operate_time` datetime DEFAULT NULL,
  `operate_ip` varchar(25) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_role_id` (`role_id`),
  KEY `fk_user_id` (`user_id`),
  CONSTRAINT `fk_user_id` FOREIGN KEY (`user_id`) REFERENCES `t_sys_user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_role_id` FOREIGN KEY (`role_id`) REFERENCES `t_role` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

posted @ 2018-11-20 14:53  夏威夷8080  阅读(1393)  评论(0编辑  收藏  举报