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


    为什么需要自己写?

    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;
  • 相关阅读:
    junit基础学习之-多线程测试(6)
    junit基础学习之-参数初始化(5)
    junit基础学习之-junit3和4的区别(4)
    junit基础学习之-断言注解(3)
    junit基础学习之-测试service层(3)
    java 实例 货币格式
    java md5 数据加密
    java 选择一个类,返回该实例对象
    java 输出为2的倍数的方法
    java 实例 设计一个方法,计算一个数的n次幂
  • 原文地址:https://www.cnblogs.com/shamo89/p/9988954.html
Copyright © 2020-2023  润新知