# TenonAdmin **Repository Path**: lauralxj/TenonAdmin ## Basic Information - **Project Name**: TenonAdmin - **Description**: 一个零配置、可扩展的 ASP.NET Core 后台管理系统内核,内置 RBAC、数据权限,NuGet 优先分发。提供两套前端模板:Vue 3 + Naive UI、React 19 + Ant Design。 - **Primary Language**: C# - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: https://tenonadmin.52moyu.net - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 12 - **Created**: 2026-09-18 - **Last Updated**: 2026-09-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [English](README.md) | 简体中文 | [日本語](README.ja.md)
三行代码为您的 ASP.NET Core 项目添加完整、可扩展的 RBAC 访问管理层。
--- ## 🎨 这是什么? TenonAdmin 将通用的后台管理功能封装为 NuGet 包。用户、角色、菜单、多组织数据权限、字典、配置、操作日志、文件上传——这些每个后台系统都要重新开发的功能——通过 `dotnet add package` 即可引入。在 `Program.cs` 中只需三行代码,就能获得完整的管理 API: ```csharp builder.Services.AddTenonAdmin(builder.Configuration); var app = builder.Build(); app.MapTenonAdmin(); ``` - **零配置启动**——首次运行自动建表、加载种子数据、默认使用 SQLite,甚至不需要数据库服务器 - **不满意就替换**——所有内置服务都基于接口实现,使用 `TryAdd` 注册。你的实现优先,内置实现自动让道,无需 fork 代码 - **升级等于更新包版本**——bug 修复和新功能通过包更新获取,业务代码无需迁移 传统做法是克隆模板仓库:几百个文件变成你的,维护成本高,业务代码和框架代码混在一起,框架更新时只能手动合并 diff。TenonAdmin 反其道而行——通用功能是包依赖,业务代码始终是业务代码。 前端也有配套方案:**两套功能等价的模板**(Vue 和 React),选择你熟悉的技术栈作为项目起点。 ## 🗺️ 运行时架构 请求主路径:双前端模板 → Host(含 SignalR)→ 鉴权与数据权限 → 领域服务 → SqlSugar → DB。旁路是内核自带的定时任务调度,以及可选的独立 Worker 进程。 ## 🔭 想先看成品? [在线演示](https://tenonadmin.52moyu.net/login)跑的不是内核自带的样例宿主,是一个独立的消费者应用 **[tenon-example](https://github.com/Tenon-Net/tenon-example)**:它从 NuGet 装包、`degit` 拿前端模板、写了一个 CRM 业务模块,然后部署上线。源码全开,你接入之后写出来的东西就长那样。 登录页有四个一键登录按钮。其中三个业务账号打开同一张客户列表,分别看到 214、128、42 条,而查询它的 `CustomerService` 里没有一行机构过滤——那是数据权限的全局过滤器在业务代码之外挂上去的。[《同一个查询,三个数字》](https://github.com/Tenon-Net/tenon-example/blob/dev/docs/showcase-multi-org-data-scope.md)讲了它挂在哪。 ## 🚀 快速开始 ### 环境要求 - .NET 10 SDK - Node.js 20+(仅在运行前端模板时需要) ### 先跑起来看看 克隆仓库后,一行命令启动后端: ```bash dotnet run --project backend/samples/MinimalHost ``` 首次启动会自动创建数据库和表,加载种子数据,并在控制台打印随机生成的超级管理员密码(账号 `superAdmin`)。API 启动在 http://localhost:5100。 选择一套前端(也可以同时运行,互不冲突): ```bash cd web && npm install && npm run dev # Vue → http://localhost:5173 cd web-react && npm install && npm run dev # React → http://localhost:5174 ``` 打开浏览器,使用控制台显示的凭证登录,即可拥有完整的后台管理界面。在 Windows 上更简单:双击仓库根目录的 `dev.bat`,后端和两个前端会一键启动。 ### 接进你自己的项目 ```bash dotnet add package TenonAdmin ``` 将上面的三行代码加入 `Program.cs`,JWT 认证、RBAC、数据权限、所有管理端点都会自动注册。更换数据库只需配置: ```jsonc // appsettings.json "TenonAdmin": { "Database": { "DbType": "MySql", // Sqlite / MySql / SqlServer / PostgreSQL "ConnectionString": "..." } } ``` ### 内置实现不想用?换掉它 所有内置服务都基于接口实现,使用 `TryAdd` 注册——先注册你的实现,内置的自动让道: ```csharp // 例如替换密码哈希算法:先注册你的实现 builder.Services.AddSingleton