# ruoyi-rust **Repository Path**: rustdev/ruoyi-rust ## Basic Information - **Project Name**: ruoyi-rust - **Description**: RuoYi-Rust(tokio,axum)是一个雄心勃勃的项目,旨在通过现代、高性能的 Rust 语言及其强大的生态系统,完整重写主流Ruoyi的Java Web 框架 后端服务 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 111 - **Forks**: 39 - **Created**: 2025-09-09 - **Last Updated**: 2026-07-08 ## Categories & Tags **Categories**: backend **Tags**: None ## README # RuoYi-Rust — 高性能 Rust 重构后端 #### 丰盛辉煌 [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Rust Version](https://img.shields.io/badge/rust-1.88%2B-orange.svg)](https://www.rust-lang.org/) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md) --- > 有任何需求,请直接在 Issues 中提出,有时间会慢慢补充完善。 --- **RuoYi-Rust** 是一个雄心勃勃的项目,始于(2025-08-28),旨在通过现代、高性能的 Rust 语言及其强大的生态系统,完整重写主流 Java Web 框架 [RuoYi](https://gitee.com/y_project/RuoYi) 的后端服务。我们追求的目标不仅是功能对等,更是在性能、资源占用(目前仅几 M 的内存占用)、安全性及现代化开发体验上实现全面超越,为 Rust 生态提供一个可复用的企业级管理系统方案。 🔗 **在线演示:[http://212.129.155.221:9081](http://212.129.155.221:9081)** | 账号:`admin` 密码:`admin123` ### 2026-06-29 新版发布 - **前端全面升级**:配套前端从 RuoYi-Vue3 升级为基于 **Vue Vben Admin v5.7.0** 的 [ruoyi-rust-ui-plus](https://gitee.com/rustdev/ruoyi-rust-ui-plus.git),采用 Vue 3 + TypeScript + Element Plus + Tailwind CSS v4 + UnoCSS,开发体验更佳。 - **代码生成工具增强**:新增完整的代码生成前端页面(导入表、创建表、预览代码、编辑配置、拖拽排序、批量下载),前后端全链路打通。 - **AI 协作新范式**:**所有新业务优先使用代码生成工具产出统一规范的项目骨架,保证架构一致、减少低级 bug;剩余业务细节交由 AI 自动填充,整体提升研发效率**。 ## 🎯 配套项目 | 项目 | 说明 | |------|------| | **后端** | [ruoyi-rust](https://gitee.com/rustdev/ruoyi-rust.git) — 本项目,Rust 后端服务 | | **前端(推荐)** | [ruoyi-rust-ui-plus](https://gitee.com/rustdev/ruoyi-rust-ui-plus.git) — 基于 Vue Vben Admin v5.7.0 + Element Plus + TypeScript | | **前端(旧版)** | [ruo-yi-vue3](https://gitee.com/rustdev/ruo-yi-vue3.git) — RuoYi-Vue3 微调版(已停止维护) | ## ✨ 核心亮点 (Why RuoYi-Rust?) - 🚀 **极致性能**: 基于 `Tokio` 和 `Axum` 框架,原生异步,无 GC 延迟。提供比原生 JVM 应用更快的 API 响应速度和显著降低的内存占用。 - 🔒 **内存安全**: 借助 Rust 强大的所有权和借用检查机制,从编译层面根除空指针、数据竞争等常见的运行时安全隐患,构建坚如磐石的系统。 - 📦 **极简部署**: 整个后端项目可编译为单个可执行文件(内置缓存系统),不依赖 JRE、Tomcat、Nginx 等任何外部运行时。部署过程从未如此简单:上传文件,启动,仅此而已。 - 🗄️ **多数据库支持**: 内置 **MySQL / PostgreSQL / SQLite** 适配,可通过 URL 或 host/port/database 结构化配置切换数据库,连接池大小、连接/空闲超时等参数均可配置。 - ⚡ **多级权限缓存**: 权限数据支持 **moka 本地缓存 (L1)**、**Redis 缓存 (L2)** 或两级混合模式,角色/菜单/用户授权变更时自动失效对应缓存,显著降低高频鉴权的数据库压力。 - 🛠️ **现代化开发体验**: - **类型安全的数据库访问**: 采用 **SeaORM** 作为数据库访问层,遵循"数据库 Schema 为唯一真实来源"原则。不仅支持 MySQL / PostgreSQL / SQLite,还能在编译期发现大量不符合数据库表结构的查询错误。 - **声明式权限控制**: 通过自定义过程宏实现类型安全的声明式 API 权限校验,将权限元数据与业务逻辑高度内聚,彻底告别手写权限字符串带来的风险。 - **模块化设计**: 采用清晰的 Cargo Workspace 结构和分层架构,实现高内聚、低耦合,便于维护与扩展。 - **数据库迁移**: 内置 `sea-orm-migration` 数据库迁移模块,Schema 变更通过版本化迁移脚本管理,告别手工维护 SQL。 ## 📊 项目状态 我们正在逐步实现 RuoYi 的全部功能。当前已完成的核心模块如下: - [x] **核心框架** - [x] 配置加载 (`config-rs`) - [x] 结构化日志 (`tracing`) - [x] 数据库连接池 (SeaORM,支持 MySQL / PostgreSQL / SQLite) - [x] 统一响应 (`AjaxResult`) 与错误处理 (`AppError`) - [x] JWT 认证中间件 (`jwt-simple`) - [x] 高性能本地缓存 (`moka`),可选 Redis 二级缓存 - [x] 数据库迁移 (`sea-orm-migration`) - [x] 客户端登录扩展:登录支持透传 `client_id`,可按客户端配置解析设备类型、固定超时与活跃超时 - [x] 单端登录控制:支持按 `user_id + device_type` 维度顶号;当 `security.concurrent_login = false` 时,同账号同端新登录会挤掉旧会话 - [x] 在线会话增强:在线用户记录已保存 `device_type`、`client_id`、活跃超时与固定过期上限,便于区分 Web / App 等登录来源 - [x] **系统模块 (`system`)** - [x] 登录、获取用户信息、动态路由 (`/login`, `/getInfo`, `/getRouters`) - [x] 菜单管理 - [x] 部门管理 - [x] 字典管理 - [x] 参数管理 - [x] 角色管理 - [x] 用户管理 - [x] 系统通知 - [x] 岗位管理 - [x] 客户端管理 - [x] **权限体系** - [x] 声明式权限校验过程宏 (`ruoyi-macros`) - [x] 数据权限(全部 / 本部门 / 本部门及以下 / 自定义 / 仅本人) - [x] **监控模块 (`monitor`)** - [x] 操作日志 - [x] 登录日志 - [x] 在线用户 - [x] 定时任务 - [x] 服务监控(CPU / 内存 / 磁盘) - [x] 缓存监控 - [x] **对象存储 (`oss`)** - [x] 文件上传 / 下载 - [x] AWS S3 协议兼容(推荐 [RustFS](https://github.com/rustfs/rustfs),同时兼容 MinIO、阿里云 OSS、腾讯云 COS、华为云 OBS、AWS S3 等) - [x] **代码生成工具 (`code-tool`)** - [x] 数据库元数据自动提取 (MySQL / PostgreSQL / SQLite) - [x] Rust 后端全栈生成 (Model, Service, Handler, Mod, Router) - [x] Vue 前端全栈生成 (index.vue, api.ts) - [x] **自动化权限宏注入**: 自动生成 `#[require_permission("...")]`,无需手动维护 Enum - [x] 结构化 ZIP 下载 (自动分类 backend / frontend / sql 文件夹) - [x] 在线预览生成代码(左侧文件树 + 右侧代码展示) - [x] 导入已有表 / SQL 创建表 / 同步数据库结构 - [x] 可视化编辑表配置(字段属性、查询方式、显示类型、字典绑定、拖拽排序) - [x] 菜单 SQL 自动生成 ### 🚧 框架认证 / 客户端能力当前已实现与未实现说明 #### 已实现 - [x] 登录接口已支持传入 `client_id`,并根据 `sys_client` 读取客户端配置 - [x] 可基于客户端配置控制: - [x] `device_type`(设备类型隔离) - [x] `timeout`(token 固定超时) - [x] `active_timeout`(在线会话活跃超时 / 滑动续期) - [x] 单端登录已接入主登录流程:可按同账号、同设备类型执行顶号 - [x] 已提供后台客户端管理能力:维护 `client_id`、`client_key`、`client_secret`、`grant_type`、`device_type`、超时配置、状态等字段 - [x] 客户端停用后,登录时会拒绝该客户端发起的请求 #### 暂未实现 / 当前限制 - [ ] **授权类型(grant_type)校验尚未真正接入登录认证流程** - 当前框架登录认证仍然只有“账号密码登录”这一条主链路 - 虽然 `sys_client.grant_type` 字段、列表筛选、导入导出、后台维护已经具备,但目前更多是配置存储与展示 - 也就是说:**现在还没有根据 `grant_type` 去区分或限制 password / sms / social / refresh_token 等不同授权流程** - [ ] 暂未实现完整 OAuth2 / OIDC 授权中心能力 - 例如标准意义上的授权码模式、客户端凭证模式、刷新令牌模式、第三方社交授权回调等,当前都还未完整落地 - [ ] 暂未实现基于客户端 + 授权类型的细粒度登录准入校验 - 例如“某客户端只允许 `password`,另一个客户端只允许 `sms`”这类能力,目前还没有真正生效 - [ ] 暂未实现 `grant_type` 与前端登录入口、后端认证处理器的一一对应扩展 - 当前前端/后端主流程仍以用户名密码认证为主,后续若扩展短信登录、社交登录、刷新 token,需要继续补齐整条链路 ## 🛠️ 技术栈 (Tech Stack) ### 后端 | 领域 | 技术选型 | 理由 | |------|----------|------| | **语言/运行时** | Rust (Stable) / Tokio | 性能、安全、现代化的异步生态 | | **Web 框架** | Axum | 模块化、符合人体工程学、与 `tower` 生态无缝集成 | | **数据库交互** | SeaORM | 异步 ORM,支持 MySQL / PostgreSQL / SQLite,提供类型安全的数据库访问 | | **数据库迁移** | sea-orm-migration | Schema 版本化迁移,与 SeaORM 深度集成 | | **序列化** | Serde | Rust 生态的事实标准,性能卓越,功能强大 | | **配置管理** | `config-rs` | 支持多种格式,支持环境覆盖,简单易用 | | **日志系统** | `tracing` | 结构化日志,与 `tokio` 和 `axum` 深度集成 | | **认证/授权** | `argon2` / `jwt-simple` | 现代密码哈希标准;纯 Rust 实现的 JWT 库,轻量安全 | | **缓存** | `moka` / Redis | 高性能本地缓存,可选 Redis 二级缓存,灵活应对单机或分布式部署 | | **权限宏** | `syn` / `quote` | 自定义过程宏,实现声明式、编译时安全的权限校验 | | **对象存储** | AWS SDK S3 | 兼容 S3 协议,推荐 [RustFS](https://github.com/rustfs/rustfs)(Rust 原生,性能 2.3x MinIO),同时兼容 MinIO、阿里云 OSS、腾讯云 COS、华为云 OBS、AWS S3 | | **OpenAPI** | aide / schemars | 自动生成 Swagger/OpenAPI 文档 | ### 旧前端(原若依框架前端) ### 新前端(ruoyi-rust-ui-plus) | 领域 | 技术选型 | 说明 | |------|----------|------| | **框架** | Vue 3.5 + TypeScript 6 | Composition API + `