RuoYi-Vue-Plus 实战指南:多租户后台管理系统从零跑通到选型判断

RuoYi-Vue-Plus 实战指南:多租户后台管理系统从零跑通到选型判断

【免费下载链接】RuoYi-Vue-Plus多租户后台管理系统 重写RuoYi-Vue所有功能 集成 Sa-Token、Mybatis-Plus、WarmFlow、SpringDoc、Hutool、OSS 定期同步项目地址: https://gitcode.com/GitHub_Trending/ru/RuoYi-Vue-Plus

RuoYi-Vue-Plus 是 Dromara 团队对 RuoYi-Vue 的完全重写版后端(当前版本 6.0.0,基于 Spring Boot 4.1 + JDK 21),面向需要多租户、审批流、分布式能力的团队,开箱提供用户/角色/菜单、文件存储、定时任务、工作流等一整套后台能力。适合已经在用或准备选型 RuoYi 系框架的 Java 后端团队。本文按"先跑起来,再讲场景,最后给选型结论"的顺序组织。

一、初体验:从克隆到登录页面(一条流程走通)

整条链路只有 4 步,全部依赖已就绪(JDK 21、Maven 3.6+、MySQL 8、Redis 6+):

git clone https://gitcode.com/GitHub_Trending/ru/RuoYi-Vue-Plus cd RuoYi-Vue-Plus mysql -uroot -proot -e "CREATE DATABASE `ry-vue` DEFAULT CHARACTER SET utf8mb4" source script/sql/ry_vue.sql # 主库;如需工作流再导入 ry_workflow.sql
  1. 启动:执行 ruoyi-admin/ 下的 DromaraApplication.java,默认端口 8080。前端另有一个配套的 plus-ui 项目(README 中有地址),构建后走 nginx 反代。
  2. 默认管理员账号登录后即可看到菜单管理、角色管理、代码生成等页面,接口文档地址在/api-docs(SpringDoc 分组扫描见 application.yml 的springdoc.group-configs)。
  3. 不想手动装 MySQL/Redis/MinIO 的话,直接用 script/docker/docker-compose.yml,它编排了 mysql 8.4.9、redis 8.6.3、minio、nginx 和两台ruoyi/ruoyi-server:6.0.0应用容器(server1/server2 双节点,用来演示分布式会话与分布式锁场景);换 Oracle/PostgreSQL/SQLServer 则看 script/docker/database.yml,对应的建库脚本在 script/sql/ 下的 oracle、postgres、sqlserver 子目录,文件名一一对应。

注意一点:spring.profiles.active由 Maven profile 注入,根 pom.xml 里dev是默认激活的(对应 application-dev.yml),local和prod各一份配置,改配置前先确认自己跑的是哪个 profile。

二、场景地图:它替你把哪些业务问题解决了

不按模块罗列,直接说你能拿它交付的东西:

  1. 数据范围隔离(权限场景)。给 Mapper 方法挂@DataPermission注解,框架在 SQL 执行前自动拼上部门/角色的行级过滤条件。业务代码不用写任何where dept_id in (...),换查询方法、加 join 表都继续生效。示例见 TestDemoMapper.java。
  2. 接口级鉴权。基于 Sa-Token,@SaCheckLogin、@SaCheckRole、@SaCheckPermission、二级认证校验直接写在 Controller 上,角色与权限支持AND、OR这类组合表达式(演示代码在 SaTokenTestController.java)。登录侧是策略模式:密码、短信、邮箱、扫码(Xcx)、第三方社交登录(JustAuth)各是一个策略类,统一在 IAuthStrategy.java 后面扩展即可。
  3. 审批流。工作流模块用 WarmFlow 1.8.9 实现转办、委派、加减签、会签/或签/票签,自带流程图设计器 UI(warm-flow.ui: true)。请假流程的演示定义就在 script/leave/ 下的 6 个 JSON 文件,导入后可以在页面上直接发起、审批、跟踪。
  4. 多租户与套餐。仓库 README 将"针对分布式集群场景全方位升级"作为项目定位,多租户是其核心方向(TenantLineInnerInterceptor在 MybatisPlusConfig.java 的插件清单注释中列为标准接入点);社区另有"删除多租户与工作流"的精简分支,单租户项目不必背着这两套能力。
  5. 后台运营基座。用户/部门/岗位/菜单/字典/参数/通知公告、操作日志与登录日志、在线用户踢出、缓存监控、服务监控(SpringBoot-Admin)、文件管理(MinIO + 一切 S3 协议云存储)、代码生成器(设计好表结构一键生成 CRUD 与前端页面)。

三、深挖:数据权限注解与登录策略这两个最值钱的技术点

3.1@DataPermission:一行注解替代手写过滤 SQL

实现链路很短,读一遍源码就有底:

  • 入口是 PlusDataPermissionInterceptor.java。它继承 Mybatis-Plus 的BaseMultiTableInnerInterceptor,在beforeQuery处理 SELECT,在beforePrepare处理 UPDATE/DELETE,用 jsqlparser 解析出Table节点后逐个改写 WHERE 子句——所以多表 join、子查询、union(SetOperationList分支)都能覆盖。
  • 规则由 PlusDataPermissionHandler.java 提供,它从@DataPermission注解读取条件并拼装 SQL 片段;上下文缺失时会抛"数据权限上下文缺失"异常,而不是静默放行。
  • 拦截器顺序在 MybatisPlusConfig.java 里固定为:数据权限 → 分页 → 乐观锁,且注册了一个完整 SQL 日志拦截器(mybatis-plus.sql-log.enabled: true时开启),控制台能直接看到改写前后的 SQL。

收益很直接:权限规则收敛在 Mapper 层一处声明,业务 Service 完全不感知;新人写新查询方法时不会"忘记加过滤条件"。代价是复杂动态 SQL 要验证一下改写结果,建议上线前用 sql-log 把关键接口的 SQL 抽查一遍。

3.2 登录策略:加一种登录方式不碰主流程

ruoyi-admin/src/main/java/org/dromara/web/service/impl/ 下有 5 个策略实现:PasswordAuthStrategy、SmsAuthStrategy、EmailAuthStrategy、XcxAuthStrategy(小程序)、SocialAuthStrategy(微信/钉钉等三方),每个只实现IAuthStrategy接口里的校验逻辑;登录成功后通过 UserLoginSuccessEvent.java 发 Spring 事件,UserLoginSuccessListener.java 负责后续动作(如在线用户登记)。

想接一个新的登录方式(比如企业 LDAP),流程是:新建一个策略类 → 注册为 Spring Bean → 在客户端管理页面给它开登录方式。客户端维度的登录方式、token 时效都是数据库里可配置的(对应SysClientController管理的sys_client表),不用改代码就能控制"PC 端只许密码登录、小程序端只许授权登录"。

四、配置说明:启动前必改的 5 项

配置位置作用怎么改
application-dev.ymlspring.datasource.dynamic.datasource.master主库连接改成你的jdbc:mysql://host:3306/ry-vue?...、账号、密码;换 Oracle/PG/SQLServer 时同文件里有注释好的示例块,取消注释切换driverClassName即可
同文件spring.data.redis缓存/会话/分布式锁依赖默认密码写死为ruoyi123,上线前必须替换;哨兵/集群模式需改对应连接配置
application.ymlsa-token.jwt-secret-keytoken 签发密钥默认是abcdefghijklmnopqrstuvwxyz,生产环境换成随机长串
同文件api-decrypt.publicKey/privateKey请求/响应 body 加解密的 RSA 密钥对(api-decrypt.enabled默认true)官方注释明确写了"使用者请自行更换",需前后端同步替换
同文件server.port应用端口,默认 8080与本地其它服务冲突时直接改;docker 部署时也可用环境变量SERVER_PORT覆盖(见 docker-compose 的 server1 定义)

其余配置(验证码captcha.type: math、文件上传max-file-size: 10MB、工作流warm-flow.enabled: true、MQTT/ES/SnailJob/SnailAI 等)默认值可直接跑通,用到哪块再开哪块,不必一次读完 384 行。

五、踩坑手册:现象 → 原因 → 解法

现象原因解法
启动报 8080 端口被占默认端口与本地服务冲突改server.port,或停掉占用进程
登录接口 401/报 token 无效,换了密钥后前端突然全挂前后端加解密密钥没同步换api-decrypt的公私钥与前端约定的密钥是一对,必须成对替换
集群下雪花 ID 重复多台机器同网段时默认工作号冲突框架已用本机网卡 MAC 绑定雪花生成器(见idGenerator()),确认各节点网卡地址不同即可
列表页 SQL 没带部门过滤Mapper 方法没声明数据权限条件在方法上加@DataPermission并配置维度;确认没有走willIgnoreDataPermission的豁免路径
分页插件与排序冲突、批量写入慢分页合理化、批处理参数默认值PaginationInnerInterceptor已开setOverflow(true);MySQL 批量写慢时确认 url 里带rewriteBatchedStatements=true(dev 配置默认带)
用 Redis 7/8 的客户端特性报兼容问题Redisson 4.6.1 对旧版 Redis 的语法差异项目声明支持 Redis 6+,先对齐版本;分布式限流、队列等新特性依赖 Redis 6 语法
工作流页面打不开设计器warm-flow.ui被关闭或静态路径被拦检查warm-flow.ui: true,以及security.excludes是否包含/warm-flow-ui/config
Docker 部署数据丢了数据目录挂载在宿主机/docker/...下备份时注意 mysql、redis、minio 的挂载卷路径(docker-compose 中已写明)

六、选型参考:什么团队该用,什么团队别用

适合:

  • 中台/多部门后台,需要"部门-角色-菜单-按钮"四级权限和数据范围控制,且不想自己维护这套过滤逻辑;
  • 有审批业务(请假、报销、用章),想省掉自研流程引擎的几个月;
  • 团队用 Spring Boot 3/4 + MyBatis-Plus 技术栈,希望框架把缓存(Redisson)、分布式锁(Lock4j)、任务调度(SnailJob)、文件(MinIO/S3)、短信(sms4j)、Excel 这些轮子都选好了;
  • 需要国产化数据库适配(Oracle、PostgreSQL、SQLServer 脚本齐全,达梦/金仓走 MyBatis-Plus 方言支持)。

不适合:

  • 只要单租户单节点、逻辑简单的内部小工具——这套框架的模块数和依赖面(工作流、AI、MQTT、ES 全是可选但都预置在依赖树里)对你就是负担,社区有删减多租户与工作流的 Single 分支可以考虑;
  • 需要严格微服务拆分的架构——它是"单体 + 分布式能力"的定位,不是一套微服务脚手架;
  • 团队不熟 Java 生态,或前端要 Vue2 老版本——官方前端是 Vue3 + TS + Element Plus 重写的,老 Vue2 前端不能直接对接。

七、小结与下一步

RuoYi-Vue-Plus 的价值一句话:把权限隔离、审批流、文件与任务调度这些"每个后台都要做一遍"的事做成了默认值,你只需要写业务表和业务逻辑。

下一步建议:先用script/sql/ry_vue.sql建库启动一次,然后用代码生成器对一张真实业务表生成 CRUD,跑通"建表 → 生成 → 挂 @DataPermission → 接口文档验收"这整条链路,半天内你就能判断它和你项目的契合度。

【免费下载链接】RuoYi-Vue-Plus多租户后台管理系统 重写RuoYi-Vue所有功能 集成 Sa-Token、Mybatis-Plus、WarmFlow、SpringDoc、Hutool、OSS 定期同步项目地址: https://gitcode.com/GitHub_Trending/ru/RuoYi-Vue-Plus

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Simulink搭建AUTOSAR模型的工程实践与RTE一致性避坑指南

Simulink搭建AUTOSAR模型的工程实践与RTE一致性避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 2:08:45 阅读更多 →
AI辅助STM32开发实战:从提示词设计到代码审查的完整协同流程

AI辅助STM32开发实战:从提示词设计到代码审查的完整协同流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 2:07:44 阅读更多 →
ZCC485高速超低功耗RS485芯片实战解析

ZCC485高速超低功耗RS485芯片实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 2:07:44 阅读更多 →

最新新闻

思科模拟器6.2:从安装到避坑的完整实战指南

思科模拟器6.2:从安装到避坑的完整实战指南

简介:这是一份思科模拟器6.2安装包,官方名称为Packet Tracer,面向网络技术学习者、思科认证考生以及开展网络实验教学的教师。软件以图形化方式搭建虚拟网络环境,可模拟路由器、交换机、无线接入点、防火墙等设备,支持…

2026/10/21 2:47:00 阅读更多 →
思科模拟器6.2全攻略:从网络仿真到CCNA实验与排错

思科模拟器6.2全攻略:从网络仿真到CCNA实验与排错

简介:网络仿真工具是网络工程师和认证学习者不可或缺的实践平台,它通过软件模拟真实设备的行为,让复杂的协议交互和故障排查变得可视化、可重复。思科模拟器作为经典的网络仿真环境,不仅支持路由、交换、无线等基础实验&#xff0…

2026/10/21 2:47:00 阅读更多 →
iOS地图定位Demo:原生MapKit+CoreLocation从权限到落图

iOS地图定位Demo:原生MapKit+CoreLocation从权限到落图

简介:一个面向iOS开发者的地图定位入门Demo,演示Core Location与MapKit的集成方式,清晰解决定位权限申请、位置获取、地图展示等基础问题,适合初学者到中级开发者作为实践参考。压缩包共23个文件,主要包含Objective-C源…

2026/10/21 2:47:00 阅读更多 →
拆解一个做 PPT 工具:素材自动变大纲一键出片

拆解一个做 PPT 工具:素材自动变大纲一键出片

## 背景这篇记录一次把做 PPT流程工程化的尝试。## 核心能力- 文本素材自动梳理大纲- 大纲支持二次编辑- 多套配色模板可选- 渲染16:9标准PPTX文件## 落地场景学习提升等场景都能直接搬进工作流,输入是散乱的原始材料,输出是可直接交付的成品。## 实现要…

2026/10/21 2:47:00 阅读更多 →
Git核心操作与四区模型详解:从基础命令到协作实战避坑指南

Git核心操作与四区模型详解:从基础命令到协作实战避坑指南

1. 为什么“git 基本操作”值得单独拎出来讲刚入行那会儿,我对 Git 的态度就是“能用就行”——clone、pull、push三板斧走天下,遇到冲突就慌,遇到回退就懵,实在不行就把整个项目删了重新拉一遍。后来参与协作的项目多了&#xff…

2026/10/21 2:47:00 阅读更多 →
Hurys毫米波雷达CAN调试软件安装与通信故障排查指南

Hurys毫米波雷达CAN调试软件安装与通信故障排查指南

简介:本资源是面向汽车电子工程师与ADAS系统开发者的毫米波雷达调试工具集,聚焦Hurys雷达参数配置、CAN通信联调与故障诊断等核心场景,解决雷达实车测试中软硬件协同调试难、驱动兼容性差、数据解析门槛高等实际问题。压缩包共19个文件&#…

2026/10/21 2:46:00 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →