做了好几个后台系统之后,我把这套多租户中后台底座开源了(XiHan.BasicApp 基于.NET 10 + Vue 3)
做了好几个后台系统之后我把这套多租户中后台底座开源了XiHan.BasicApp 基于.NET 10 Vue 3如果你也写过后台管理系统大概率经历过这几件事每开一个新项目登录、用户、角色、菜单、权限又从零搭一遍复制粘贴改改改权限只做到了能不能看这个菜单等真到了这个人只能看自己部门的数据“手机号要打码”就开始一个补丁接一个补丁想做多租户结果发现登录、数据隔离、套餐、计费这些东西牵一发动全身最后做成了一个伪多租户。我也一样。前前后后做了几个中后台每次都在重复造轮子每次都不太满意。于是这两年我把反复踩过的坑沉淀成了一套自己用着顺手的底座 ——XiHan.BasicApp现在把它开源了。它是什么一句话一套基于 .NET 10 Vue 3 的企业级多租户中后台内核。后端是 DDD 分层 CQRS跑在我自研的底层框架 XiHan.Framework 上前端是 Vue 3.5 TypeScript Naive UI。它不是又一个xxx-admin的套壳。多租户、RBAC ABAC、字段级安全这些通常被做个样子的东西我是当成核心来做的——而且它现在就在真实环境里跑着不是一个 demo。几个我自己最满意的设计光说功能多没意思我更想聊聊几个为什么这么做的决定。1. 登录后再选租户而不是登录前大多数多租户系统让你先选租户、再登录体验很别扭。我把邮箱作为全平台唯一身份登录后由系统按你的归属智能落点平台管理员进控制台、单租户用户直接进工作台、多租户成员进租户选择页头像下拉里随时切换租户。超级管理员还能以平台态切进任意租户代为管理。2. 权限一直做到了字段级RBAC 解决能不能进这个页面、点这个按钮ABAC 解决能看哪些数据——全部 / 本部门 / 本部门及子部门 / 仅本人越权请求在服务端直接拦掉FLS字段级安全解决敏感字段能不能看、要不要脱敏——手机号、邮箱该打码的打码没权限的字段根本不下发也导不出去。三层叠在一起权限才算做完整。这也是我觉得很多后台模板做得最敷衍的地方也是正式上线后openapi、接口最容易引发安全问题的隐患。3. 写应用服务 写接口没有 Controller后端的应用服务打个[DynamicApi]就直接暴露成 REST 接口了零 Controller 样板Scalar 文档自动生成。少写一半的胶水代码。4. 菜单只有一个事实源菜单、路由、组件路径、权限码、国际化键全在后端一个PageRegistry里登记。前后端契约不会漂再也不用前端配一遍菜单、后端配一遍权限两边对不上。5. 前端的列表页是配置出来的全站二十多个列表页几乎没有重复的 Search / Table 代码——我做了一套 Schema 驱动的列表框架搜索、表格、导出都用配置生成列设置、高级搜索、个人视图、行悬停速览、树形、列宽拖拽、导入导出开箱即用。而且权限 / 租户 / 偏好全程感知你的列设置和搜索习惯还会同步到云端多端一致。6. 全栈代码生成连上数据库选一张表实体、DTO、仓储、服务、接口、前端页面一键生成Scriban 模板可自定义。新增一个 CRUD 模块从几小时变成几分钟。前端我也没敷衍后台的前端经常被当成附属品但我在这上面花的心思不比后端少。偏好中心亮 / 暗主题、主题色、布局风格、紧凑度都能调更关键的是你的偏好、列设置、搜索习惯会同步到云端——换台电脑登录还是你熟悉的样子。灵动岛借了点手机的灵感全局操作反馈、异步耗时任务进度都收敛到顶部一个小岛里不再满屏弹 toast顺手的细节多标签页、收藏夹、命令面板式全局搜索键盘呼出直达任意页面与操作、超多的过渡动画——这些小东西才是每天用起来顺不顺手的关键亮 / 暗双主题是认真做的不是给body加个 class 了事每个页面、每个组件都对过移动端不是 PC 页面的缩小版很多后台的移动端就是把 PC 页面硬塞进小屏。我是按移动端交互重新做的——登录、工作台、菜单、命令面板、消息中心体验接近原生 App安全和审计是我最较真的部分做 B2B 系统谁、在什么时候、做了什么必须查得到。系统内置六类日志——访问 / API / 操作 / 异常 / 登录 / 实体变更——各自独立写入请求里的密码、令牌、密钥、身份证这些落库前自动脱敏实体变更精确到字段还能区分新增 / 修改 / 删除 / 恢复。配合前面说的字段级安全越权访问、敏感数据泄露这些上线后最容易出事的点从一开始就被框住了。还有这些剩下的功能我快速过一下完整认证JWT 双令牌、邮箱 / 短信验证码登录、OAuth2GitHub / Google / QQ其他的可自行实现底层都抽象出来了、2FA、多端登录控制消息中心系统公告 / 安全 / 业务 / 待办 / 紧急五类顶部横幅、登录弹窗、强制阅读、按角色部门定向SignalR 实时推送网关能力灰度发布百分比 / 白名单 / 租户 / 请求头、限流熔断、请求追踪、OpenAPI 签名加密系统监控CPU / 内存 / 磁盘 / 网络 / 服务状态一屏掌握其它文件多存储本地 / S3 / OSS / COS / MinIO、定时任务、审核工作流、富文本 / Markdown / Cron / JSON 编辑器、中英国际化……技术栈 谁适合用后端.NET 10 / SqlSugarPostgreSQL / MySQL/ Redis / SignalR / Serilog前端Vue 3.5 / TypeScript / Vite / Naive UI / Pinia / Tailwind CSS / Tiptap代码本身我也尽量写得能看科学的框架结构清晰的代码注释直观的树形依赖——clone 下来不至于一脸懵能比较快地理清它是怎么组织起来的。系统里还自带了一个关于页把后端和前端用到的每一个开源依赖都列了出来——既是对这些项目的致敬也方便你审一遍依赖再决定用不用它可能适合你如果你想要一套权限和多租户是真做了的中后台起步模板而不是又一个换皮的 admin在学 .NET Vue 全栈想看 DDD / CQRS、动态 API、RBAC ABAC 怎么落地在做 B2B SaaS需要租户隔离 套餐版本 权限白名单这套东西。跑起来很简单# 后端gitclone https://github.com/XiHanFun/XiHan.BasicApp.gitcdXiHan.BasicApp/backend dotnet run--projectsrc/main/XiHan.BasicApp.WebHost --launch-profile Development# 前端另开一个终端cd../frontendpnpminstallpnpmdev首次启动会自动建表 初始化种子数据默认管理员账号superadmin。后端 API 文档在http://127.0.0.1:9708/scalar。写在最后这个项目还会持续打磨它并不完美——短信网关、支付还在路上有些模块也还在重构。但它是我真刀真枪在用的东西不是写给人看的样板。如果它能帮你少造一个轮子或者给你一点全栈实践的参考我就很满足了。GitHubhttps://github.com/XiHanFun/XiHan.BasicAppGiteehttps://gitee.com/XiHanFun/XiHan.BasicApp源码导读https://deepwiki.com/XiHanFun/XiHan.BasicApp在线预览https://basicapp.xihanfun.comStar、Issue、PR、吐槽都欢迎。如果想看某个模块的实现细节——比如多租户怎么隔离、字段级安全怎么做的、代码生成怎么写的——评论区告诉我我可以单独拆一篇出来。

相关新闻

C++ CAD数据交换:libdxfrw库读写DXF/DWG文件实战指南

C++ CAD数据交换:libdxfrw库读写DXF/DWG文件实战指南

1. 项目概述:为什么你需要关注 libdxfrw?如果你正在用 C 开发与 CAD 数据打交道的应用,无论是做机械设计软件、建筑信息模型(BIM)工具、数控(CNC)加工路径生成,还是游戏引擎的地图编…

2026/7/14 6:29:05阅读更多 →
OSV 漏洞元数据采集实战:用 Python 构建包生态漏洞情报数据集

OSV 漏洞元数据采集实战:用 Python 构建包生态漏洞情报数据集

㊗️本期内容已收录至专栏《Python爬虫实战》,持续完善知识体系与项目实战,建议先订阅收藏,后续查阅更方便~ ㊙️本期爬虫难度指数:⭐⭐⭐☆☆(进阶级) 🉐福利: 一次订阅后,专栏内的所有文章可永久免费看,持续更新中,保底1000+(篇)硬核实战内容。 全文目录: 🌟…

2026/7/14 6:24:04阅读更多 →
Mask2Former优化实现集装箱密封检测的深度学习方案

Mask2Former优化实现集装箱密封检测的深度学习方案

1. 集装箱密封检测技术解析与Mask2Former模型优化实战在物流运输和国际贸易领域,集装箱密封性检测是确保货物安全的关键环节。传统的人工检测方式效率低下且容易出错,而基于深度学习的视觉检测技术正在彻底改变这一现状。本文将深入探讨如何利用改进的Ma…

2026/7/15 8:13:52阅读更多 →
PSTAlertController在真实项目中的应用:从PSPDFKit到你的App

PSTAlertController在真实项目中的应用:从PSPDFKit到你的App

PSTAlertController在真实项目中的应用:从PSPDFKit到你的App 【免费下载链接】PSTAlertController API similar to UIAlertController, backwards compatible to iOS 7. Will use the new shiny API when you run iOS 8. 项目地址: https://gitcode.com/gh_mirror…

2026/7/15 9:47:20阅读更多 →
OpenCode:开箱即用的VS Code发行版,环境驱动型开发环境

OpenCode:开箱即用的VS Code发行版,环境驱动型开发环境

1. 项目概述:这不是又一个IDE,而是一套“能自己长出工具链”的代码环境 OpenCode不是Visual Studio Code的换皮,也不是某个小众编辑器的营销新名字——它是一个基于VS Code核心、但彻底重构了插件加载机制与工作区初始化逻辑的开源开发环境发…

2026/7/15 9:47:20阅读更多 →
基于双门限与有限状态机的突发信号检测算法实现与优化

基于双门限与有限状态机的突发信号检测算法实现与优化

1. 项目概述:从“听见”到“识别”的工程挑战 在无线通信、声学信号处理乃至工业控制领域,我们常常会遇到这样的场景:信号并非持续存在,而是像电报一样,在背景噪声中“突”地一下出现,持续一小段时间&#…

2026/7/15 9:47:20阅读更多 →
ClaudeCode深度解析:上下文理解如何重塑开发效率

ClaudeCode深度解析:上下文理解如何重塑开发效率

1. 这不是又一个“AI编程神器”的 hype,而是开发者真实工作流里的新变量“ClaudeCode真的那么厉害吗?”——这句话我最近在三个不同场景里听到了:一位带团队做金融后台系统的架构师在茶水间皱着眉问;一位刚转行半年、正在啃 LeetC…

2026/7/15 9:47:20阅读更多 →
科大讯飞学习机七款深度对比:按学龄段精准匹配指南

科大讯飞学习机七款深度对比:按学龄段精准匹配指南

1. 为什么这次要花整整一小时,把科大讯飞七款在售学习机掰开揉碎讲清楚我做教育硬件测评和家庭学习方案咨询快八年了,经手过上百台不同品牌的学习机、平板和AI教具。每年寒暑假前,后台私信里问得最多的问题永远是:“老师&#xff…

2026/7/15 9:47:20阅读更多 →
中文语音识别模型选型指南:Conformer、WavLM与轻量化ASR实战对比

中文语音识别模型选型指南:Conformer、WavLM与轻量化ASR实战对比

1. 开源中文语音识别模型的现状:不是“有没有SOTA”,而是“哪个SOTA更适配你的场景”最近三个月,我陆续帮六家不同类型的团队做过语音识别方案选型——有做智能会议纪要的SaaS初创公司,有给老年社区开发方言辅助交互系统的公益项目…

2026/7/15 9:42:20阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/15 6:42:19阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/15 6:12:45阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/14 6:17:41阅读更多 →
AI框架决定企业AI能走多远

AI框架决定企业AI能走多远

企业AI建设的第一性原理 企业搞AI,最关键的决定是什么?不是选哪家大模型,不是先做哪个场景,不是招多少AI人才——而是选哪个AI开发框架。 为什么?因为框架决定了企业AI能力的"天花板"。选对了框架&#xff0…

2026/7/15 0:01:30阅读更多 →
Java企业为什么需要AI框架

Java企业为什么需要AI框架

Java企业在AI时代的尴尬处境 Java是全球企业级应用开发的主流语言——全球超过一半的企业系统跑在Java上。但在AI浪潮面前,很多Java企业感到尴尬:大模型的接口是各种语言的,AI开发社区以其他语言为主流,似乎Java在AI时代"掉队…

2026/7/15 0:01:30阅读更多 →
CC3230x嵌入式开发实战:SD主机、定时器与低功耗模式深度解析

CC3230x嵌入式开发实战:SD主机、定时器与低功耗模式深度解析

1. 项目概述:为什么需要关注CC3230x的SD主机、定时器与低功耗?在物联网和嵌入式设备开发领域,我们常常面临一个核心矛盾:设备需要具备强大的连接能力、可靠的数据存储和实时控制功能,同时又必须严格控制功耗以延长电池…

2026/7/15 0:01:30阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/14 15:07:30阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/15 8:52:38阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/14 2:42:17阅读更多 →