资讯动态

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

发布时间:2026/10/21 2:08:50 来源:尧图企业网站定制
RuoYi-Vue-Plus 实战指南多租户后台管理系统从零跑通到选型判断【免费下载链接】RuoYi-Vue-Plus多租户后台管理系统 重写RuoYi-Vue所有功能 集成 Sa-Token、Mybatis-Plus、WarmFlow、SpringDoc、Hutool、OSS 定期同步项目地址: https://gitcode.com/GitHub_Trending/ru/RuoYi-Vue-PlusRuoYi-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 6git 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启动执行 ruoyi-admin/ 下的 DromaraApplication.java默认端口 8080。前端另有一个配套的 plus-ui 项目README 中有地址构建后走 nginx 反代。默认管理员账号登录后即可看到菜单管理、角色管理、代码生成等页面接口文档地址在/api-docsSpringDoc 分组扫描见 application.yml 的springdoc.group-configs。不想手动装 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.ymllocal和prod各一份配置改配置前先确认自己跑的是哪个 profile。二、场景地图它替你把哪些业务问题解决了不按模块罗列直接说你能拿它交付的东西数据范围隔离权限场景。给 Mapper 方法挂DataPermission注解框架在 SQL 执行前自动拼上部门/角色的行级过滤条件。业务代码不用写任何where dept_id in (...)换查询方法、加 join 表都继续生效。示例见 TestDemoMapper.java。接口级鉴权。基于 Sa-TokenSaCheckLogin、SaCheckRole、SaCheckPermission、二级认证校验直接写在 Controller 上角色与权限支持AND、OR这类组合表达式演示代码在 SaTokenTestController.java。登录侧是策略模式密码、短信、邮箱、扫码Xcx、第三方社交登录JustAuth各是一个策略类统一在 IAuthStrategy.java 后面扩展即可。审批流。工作流模块用 WarmFlow 1.8.9 实现转办、委派、加减签、会签/或签/票签自带流程图设计器 UIwarm-flow.ui: true。请假流程的演示定义就在 script/leave/ 下的 6 个 JSON 文件导入后可以在页面上直接发起、审批、跟踪。多租户与套餐。仓库 README 将针对分布式集群场景全方位升级作为项目定位多租户是其核心方向TenantLineInnerInterceptor在 MybatisPlusConfig.java 的插件清单注释中列为标准接入点社区另有删除多租户与工作流的精简分支单租户项目不必背着这两套能力。后台运营基座。用户/部门/岗位/菜单/字典/参数/通知公告、操作日志与登录日志、在线用户踢出、缓存监控、服务监控SpringBoot-Admin、文件管理MinIO 一切 S3 协议云存储、代码生成器设计好表结构一键生成 CRUD 与前端页面。三、深挖数据权限注解与登录策略这两个最值钱的技术点3.1DataPermission一行注解替代手写过滤 SQL实现链路很短读一遍源码就有底入口是 PlusDataPermissionInterceptor.java。它继承 Mybatis-Plus 的BaseMultiTableInnerInterceptor在beforeQuery处理 SELECT在beforePrepare处理 UPDATE/DELETE用 jsqlparser 解析出Table节点后逐个改写 WHERE 子句——所以多表 join、子查询、unionSetOperationList分支都能覆盖。规则由 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 里带rewriteBatchedStatementstruedev 配置默认带用 Redis 7/8 的客户端特性报兼容问题Redisson 4.6.1 对旧版 Redis 的语法差异项目声明支持 Redis 6先对齐版本分布式限流、队列等新特性依赖 Redis 6 语法工作流页面打不开设计器warm-flow.ui被关闭或静态路径被拦检查warm-flow.ui: true以及security.excludes是否包含/warm-flow-ui/configDocker 部署数据丢了数据目录挂载在宿主机/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),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑