# 权限管理中心 **Repository Path**: bingbingyihao/permission-management-center ## Basic Information - **Project Name**: 权限管理中心 - **Description**: Java设计实现的RBAC的用户、角色、权限管理平台 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-24 - **Last Updated**: 2025-10-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 权限管理中心 ## 介绍 **权限管理中心** 是一个基于 Java 技术栈实现的 RBAC(Role-Based Access Control)权限管理平台,提供用户、角色、权限的全生命周期管理功能。系统采用前后端分离架构,后端基于 **Spring Boot + MyBatis-Plus + Mysql** 构建,前端使用 **Vue3 + Element Plus** 实现响应式管理界面。 本系统可用于企业级后台管理系统的基础权限模块,支持菜单与按钮级别的细粒度权限控制,具备良好的扩展性与可维护性。 --- ## 功能特性 ✅ **用户管理** - 用户增删改查 - 密码加密存储(BCrypt) - 启用/禁用状态控制 ✅ **角色管理** - 角色创建、编辑、删除 - 支持角色编码唯一标识 ✅ **权限管理(菜单+操作)** - 支持树形结构展示权限目录 - 区分“菜单”与“按钮”类型权限 - 可配置 API 路径和 HTTP 方法进行接口级权限校验 ✅ **权限分配机制** - 用户 ↔ 角色 多对多绑定 - 角色 ↔ 权限 多对多绑定 - 支持批量分配与覆盖式更新 ✅ **日志记录** - 使用 AOP 切面自动记录操作日志(含请求参数、耗时、IP 等) - 日志输出至文件并按天压缩归档 ✅ **通用能力** - 分页查询(MyBatis-Plus 分页插件) - 参数校验(JSR-303 注解验证) - 全局异常处理 - CORS 跨域支持 - 数据库字段自动填充(创建时间、更新时间) --- ## 技术栈 ### 后端(SpringBoot) | 技术 | 版本 | 说明 | |------|------|------| | Java | 8 | 基础运行环境 | | Spring Boot | 2.3.4.RELEASE | 核心框架 | | MyBatis-Plus | 3.5.3.1 | ORM 框架 | | MySQL Connector | 8.0.32 | 数据库驱动 | | Lombok | - | 简化 POJO 编写 | | Hutool | 5.8.15 | 工具类库(IP 获取、JSON 处理等) | | Spring Security Crypto | 5.8.12 | BCrypt 密码加密 | | Validation API | - | 请求参数校验 | | AspectJ | 1.9.20 | AOP 面向切面编程 | ### 前端(admin) | 技术 | 版本 | 说明 | |------|------|------| | Vue.js | ^3.2.13 | 渐进式 JavaScript 框架 | | Vue Router | ^4.1.6 | 路由管理 | | Element Plus | ^2.2.36 | UI 组件库 | | Axios | ^1.3.4 | HTTP 客户端 | | Vue CLI | ~5.0.0 | 项目脚手架 | --- ## 运行截图 ### 1. 用户管理 ![](./assets/1.png) ### 2. 角色管理 ![](./assets/2.png) ### 3. 权限管理 ![](./assets/3.png) > 更多交互细节请本地启动后体验。 --- ## 快速开始 ### 1. 准备数据库 确保已安装 MySQL(建议 5.7 或以上),执行以下 SQL 创建表结构: ```sql CREATE DATABASE IF NOT EXISTS test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE test; -- 用户表 CREATE TABLE sys_user ( id BIGINT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名', password VARCHAR(100) NOT NULL COMMENT '密码(BCrypt 加密)', real_name VARCHAR(50) COMMENT '真实姓名', phone VARCHAR(20) COMMENT '手机号', email VARCHAR(100) COMMENT '邮箱', enabled TINYINT DEFAULT 1 COMMENT '是否启用:1=是,0=否', create_time DATETIME DEFAULT CURRENT_TIMESTAMP, update_time DATETIME ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 角色表 CREATE TABLE sys_role ( id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL COMMENT '角色名称', code VARCHAR(50) NOT NULL UNIQUE COMMENT '角色编码(如 ADMIN)', description VARCHAR(255) COMMENT '描述', create_time DATETIME DEFAULT CURRENT_TIMESTAMP, update_time DATETIME ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 权限表(菜单+按钮) CREATE TABLE sys_permission ( id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL COMMENT '权限名称', code VARCHAR(100) NOT NULL UNIQUE COMMENT '唯一编码(用于权限判断)', type ENUM('menu','button') NOT NULL COMMENT '类型:menu=菜单,button=按钮', url VARCHAR(255) COMMENT '路径(前端路由或后端API)', method VARCHAR(10) COMMENT 'HTTP方法(仅按钮有效)', parent_id BIGINT DEFAULT 0 COMMENT '父ID,0表示根节点', sort INT DEFAULT 0 COMMENT '排序字段', icon VARCHAR(50) COMMENT '图标', status TINYINT DEFAULT 1 COMMENT '状态:1=启用,0=禁用', create_time DATETIME DEFAULT CURRENT_TIMESTAMP, update_time DATETIME ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 用户-角色关系表 CREATE TABLE sys_user_role ( user_id BIGINT NOT NULL, role_id BIGINT NOT NULL, PRIMARY KEY (user_id, role_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 角色-权限关系表 CREATE TABLE sys_role_permission ( role_id BIGINT NOT NULL, permission_id BIGINT NOT NULL, PRIMARY KEY (role_id, permission_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` --- ### 2. 启动后端服务 进入 SpringBoot 模块目录并启动应用: ```bash cd permission-management-center/code/SpringBoot mvn clean compile spring-boot:run ``` > 默认端口:`8080` > 数据库连接配置位于 `src/main/resources/application.properties`,可根据需要修改。 --- ### 3. 启动前端管理界面 进入 admin 目录并启动 Vue 应用: ```bash cd permission-management-center/code/admin npm install npm run serve ``` > 默认访问地址:[http://localhost:10010](http://localhost:10010) --- ## 接口文档示例 所有接口均返回统一格式: ```json { "code": 200, "message": "操作成功", "data": {} } ``` 常用接口如下: | 路径 | 方法 | 功能 | |------|------|------| | `/sys-user/page` | GET | 分页获取用户列表 | | `/sys-user` | POST | 新增用户(密码自动加密) | | `/sys-role` | GET | 获取所有角色 | | `/sys-permission/menus` | GET | 获取所有菜单权限 | | `/sys-role-permission/tree/all` | GET | 获取完整的权限树 | | `/sys-user-role/assign` | POST | 给用户分配角色 | | `/sys-role-permission/assign` | POST | 给角色分配权限 | 详细接口可结合 Swagger 扩展或通过源码查看 Controller 层定义。 --- ## 安全说明 - 所有敏感操作均有输入校验; - 用户密码使用 `BCryptPasswordEncoder` 加密存储; - 提供全局异常拦截器防止敏感信息泄露; - 支持跨域配置,生产环境需限制 `allowedOrigins`; ⚠️ 注意:当前未集成登录认证模块(如 JWT 或 OAuth2),若需接入,请自行扩展。 --- ## 项目结构 ``` permission-management-center/ ├── README.md ├── assets/ # 截图资源 └── code/ ├── SpringBoot/ # 后端工程(Maven) │ ├── pom.xml │ └── src/main/java/com/boot/ │ ├── controller/ # 控制器 │ ├── entity/ # 实体类 │ ├── service/ # 服务层 │ ├── mapper/ # MyBatis Mapper │ ├── dto/ # 数据传输对象 │ ├── config/ # 配置类(AOP、拦截器等) │ └── aop/ # 操作日志切面 └── admin/ # 前端管理后台(Vue3) ├── public/ ├── src/ │ ├── views/ # 页面组件 │ ├── components/ # 公共组件(如选择器弹窗) │ ├── api/request.js # 封装 axios 请求 │ └── router/index.js # 路由配置 └── vue.config.js ``` --- ## 扩展建议 - ✅ 添加登录认证模块(JWT + Redis 存储 Token) - ✅ 实现动态权限加载(前端菜单根据用户权限过滤) - ✅ 增加数据权限控制(部门级、岗位级) - ✅ 集成 Redis 缓存角色权限映射提升性能 - ✅ 使用 Nginx 部署前后端分离项目 --- ## 许可证 Apache 2.0