Skip to content
第 82 / 250 章后端⏱ 12 分钟阅读

第 82 章:综合实战项目 - RBAC 权限管理系统

学习目标

  • 整合所有学过的知识,搭建企业级 RBAC 系统
  • 掌握完整项目的需求分析、架构设计、技术选型
  • 实现从零到部署的全流程实战

一、项目简介

TaskFlow 是一个企业级 RBAC(Role-Based Access Control)权限管理系统,作为本课程的综合实战项目。

二、业务模块

模块功能关键特性
用户管理增删改查、分配角色、重置密码BCrypt 加密、JWT 登录
角色管理角色 CRUD、分配菜单/权限按钮级权限
菜单管理菜单树、按钮权限三级菜单(目录/菜单/按钮)
部门管理组织架构树树形结构、数据权限
字典管理系统字典维护缓存优化
操作日志用户操作审计AOP 切面
代码生成一键生成 CRUD模板引擎
登录认证JWT 双 token自动刷新

三、技术栈

技术说明
WebSpring Boot 3.2主框架
ORMMyBatis-Plus 3.5单表 CRUD 简化
数据库MySQL 8.0主流关系型数据库
缓存Redis 7分布式缓存
消息队列RabbitMQ 3异步、削峰
认证JJWT双 token 方案
API 文档springdoc-openapi自动生成接口文档
部署Docker + Docker Compose容器化
CI/CDGitHub Actions自动化
监控Prometheus + Grafana可观测性
测试JUnit 5 + Testcontainers单元/集成测试

四、整体架构

五、模块划分

taskflow
├── taskflow-common           # 通用工具类
├── taskflow-system           # 系统模块(用户/角色/菜单/部门)
├── taskflow-generator        # 代码生成模块
└── taskflow-application      # 启动模块

六、核心流程

1. 用户登录流程

2. 权限验证流程

七、数据库设计

核心表

sql
-- 用户表
sys_user (id, username, password, nickname, email, phone, status, dept_id)

-- 角色表
sys_role (id, name, code, sort, status, data_scope)

-- 菜单/权限表
sys_menu (id, parent_id, name, type, permission, path, component, icon)

-- 部门表
sys_dept (id, parent_id, name, sort, leader)

-- 中间表
sys_user_role (user_id, role_id)
sys_role_menu (role_id, menu_id)
sys_user_dept (user_id, dept_id)

-- 操作日志表
sys_operation_log (id, user_id, operation, method, params, ip, cost, status)

详见第 83 章建表脚本。

八、接口设计

RESTful 风格

POST   /api/auth/login                # 登录
POST   /api/auth/refresh              # 刷新 token
POST   /api/auth/logout               # 登出

GET    /api/user/page                 # 用户分页
GET    /api/user/{id}                 # 用户详情
POST   /api/user                      # 创建用户
PUT    /api/user/{id}                 # 更新用户
DELETE /api/user/{id}                 # 删除用户
POST   /api/user/{id}/reset-password  # 重置密码

GET    /api/role/page                 # 角色分页
... 类似 CRUD

GET    /api/menu/tree                 # 菜单树
GET    /api/menu/permissions          # 当前用户权限

GET    /api/dept/tree                 # 部门树

详见第 84 章接口文档。

九、关键技术决策

决策点选择理由
框架版本Spring Boot 3.2 + JDK 17LTS、企业主流
ORMMyBatis-Plus单表 CRUD 简化
认证JWT(自实现)前后端分离主流
API 文档springdoc-openapi自动生成
多租户支持(开关)SaaS 场景
部署Docker Compose一键起服务
测试Testcontainers真实数据库

十、项目结构

taskflow
├── docker-compose.yml               # 一键起服务
├── Dockerfile                        # 应用镜像
├── pom.xml                           # 父 POM
├── docs/                             # 项目文档
├── sql/                              # 数据库脚本
│   ├── init.sql                      # 建表脚本
│   └── data.sql                      # 初始化数据
├── examples/                         # 嵌入文档的示例代码
│   └── taskflow/                     # 完整项目
└── src/
    ├── main/
    │   ├── java/com/taskflow/
    │   │   ├── TaskflowApplication.java
    │   │   ├── common/               # 通用:响应、异常、工具
    │   │   ├── config/               # 配置
    │   │   ├── security/             # Spring Security + JWT
    │   │   ├── modules/
    │   │   │   ├── system/           # 系统模块
    │   │   │   └── generator/        # 代码生成
    │   │   └── infra/                # 基础设施(Redis、MQ)
    │   └── resources/
    │       ├── application.yml
    │       ├── mapper/               # MyBatis XML
    │       └── logback-spring.xml
    └── test/
        └── java/com/taskflow/
            ├── unit/                 # 单元测试
            └── integration/          # 集成测试

十一、开发里程碑

十二、章节预告

后续章节将按以下顺序展开:

章节主题
83需求分析与数据库设计
84项目初始化与基础配置
85通用模块(异常/响应/工具)
86用户与认证模块
87角色与权限模块
88部门与字典模块
89操作日志与代码生成
90测试与部署实战

下一章第 83 章:需求分析与数据库设计

本站基于 VitePress 构建 · 由 Codebook 团队维护