權限管理系統(三):自定義開發一套權限管理系統


為什么需要自己寫?

  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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM