SmileXAdmin 是一个通用管理后台项目,采用前后端分离架构,旨在为各类 Web 应用提供一套完整、安全、可扩展的后台管理解决方案。项目从零构建,涵盖认证授权、用户管理、RBAC 权限控制、数据权限、系统监控、行为分析、定时任务、开放平台等企业级核心功能。

后端基于 .NET 10 构建,采用分层架构(Common → Domain → Application → Infrastructure → Web),结合 SqlSugar ORM 实现多数据库支持;前端基于 Vue 3 Composition API + TypeScript + Element Plus,配合 Vite 构建工具实现高效开发体验。项目已通过 129 个自动化测试用例(单元测试 92 + 集成测试 37),具备生产部署能力。
1. 认证与安全
基于 JWT (Bearer) + BCrypt 的认证体系,支持登录/登出/刷新 Token 轮换、锁屏解锁、重置密码等完整认证流程。
- JWT 认证:HMAC-SHA256 签名,Access Token + Refresh Token 双令牌机制;
- 登录安全:按用户名 + IP 双维度登录失败锁定与临时封禁;
- 密码安全:BCrypt 哈希存储,强制复杂度策略(大小写字母 + 数字);
- 令牌管理:访问令牌黑名单 + 刷新令牌持久化撤销(Token Family 轮换 + 盗用检测);
- 图形验证码:可配置开关,FusionCache 缓存校验,一次性使用。


2. 用户管理
完整的用户生命周期管理,支持分页查询(关键字过滤)、新增/编辑/启停/删除/重置密码,以及 Excel 批量导出。

3. RBAC 权限管理
经典的角色-菜单-按钮-接口四层权限模型,支持动态权限绑定。
- 菜单管理:多级菜单树,支持目录/菜单/按钮三级结构,可配置图标、路由、排序;
- 角色管理:角色编码唯一,支持数据权限范围配置(五档:全部/自定义部门/本部门及以下/本部门/仅本人);
- 按钮权限:权限编码全局唯一,前端通过
v-perm指令控制按钮显隐; - 接口权限:
sys_api表动态绑定接口 → 权限编码,请求时由 ApiPermissionFilter 自动鉴权。



4. 数据权限
角色级 DataScope 五档运行时解析 + 创建人行级过滤,多角色取并集,超级管理员全局可见。结果缓存 FusionCache(10 分钟),权限变更自动失效。同时提供 IgnoreDataScope 系列方法用于合法非创建人访问场景。
5. 仪表盘与分析
基于 ECharts 的可视化仪表盘,实时展示系统核心指标:
- 用户总数、今日登录数、在线用户数、文件数等汇总卡片;
- 登录趋势折线图(近 7/30 天);
- 登录分布统计(小时分布、浏览器分布、操作系统分布)。

6. 系统监控
在线用户
进程内存会话存储(ConcurrentDictionary),实时查看在线用户列表(用户名、IP、浏览器、登录时间),支持强制下线(黑名单 jti,即时生效)。

日志管理
Serilog 控制台 + 按日滚动文件 + 日志落库(独立日志库,LogSink 批量写入)。覆盖五张日志表:登录日志、审计日志、系统日志、调度日志与行为日志。

7. 定时任务
基于 Hangfire 的数据库驱动定时任务系统(sys_job 表),支持 Cron 表达式配置。内置文件清理、日志清理、刷新令牌清理等后台任务,调用目标白名单(SysJobTargets)安全保障,统一执行器调度。

8. 字典管理
系统字典类型/数据一对多管理,支持下拉框、单选、多选等前端渲染模式,全局统一的字典数据源。

9. 开放平台
开放应用/开放接口/授权管理(open_app / open_api / open_app_api),支持HMAC 签名与 AccessToken 双模式开放认证(OpenApiAuthMiddleware 中间件),为第三方集成提供标准化 API 网关能力。

10. 个人中心
支持个人信息编辑(昵称、邮箱、手机号)、头像上传(自动图片压缩)、修改密码(需验证当前密码 + 密码复杂度校验)。

后端分层架构
Web(API 层) └─ Controllers、中间件、过滤器、Swagger Application(应用层) └─ 业务服务、DTO、校验、接口定义 Infrastructure(基础设施层) └─ 仓储实现、JWT/BCrypt 安全、日志落库、邮件、文件存储、Redis Domain(领域层) └─ 实体、枚举、仓储接口 Common(公共层) └─ 统一响应、工具类、配置选项、多语言资源
技术选型一览
| 层次 | 技术 | 说明 |
|---|---|---|
| 后端框架 | .NET 10 | 控制器风格 Web API |
| ORM | SqlSugar | 多数据库、读写分离、逻辑删除 |
| 认证 | JWT + BCrypt | HMAC-SHA256 签名,令牌轮换 |
| 缓存 | FusionCache | 内存 L1 + Redis L2 二级缓存 |
| 日志 | Serilog | 控制台 + 文件滚动 + 日志落库 |
| 定时任务 | Hangfire | 数据库驱动,Cron 调度 |
| 映射 | Mapster | 实体 ↔ DTO 自动映射 |
| Excel | MiniExcel | 流式引擎,逐行读写 |
| 前端框架 | Vue 3 + TypeScript | Composition API + script setup |
| UI 组件 | Element Plus | 按需引入,CSS 变量主题 |
| 图表 | ECharts | 按需引入,控制打包体积 |
| 测试 | xUnit + Moq | 129 个自动化测试用例 |
体验说明
欢迎试用 SmileXAdmin
本项目为可公开体验的通用后台,演示环境部分敏感操作受限制。如您对项目感兴趣或有任何建议,欢迎通过博客的联系方式反馈。
其他亮点
- 统一响应:所有接口返回 ApiResponse<T>(code / message / data),业务失败统一抛出 BusinessException
- 多语言:zh-CN / en 错误消息本地化,按请求 Accept-Language 翻译
- 链路追踪:TraceId 中间件 + AsyncLocal 传递,请求日志与响应一致
- 接口限流:全局限流 + 登录/刷新/验证码等独立限流策略
- 健康检查:/health 端点(数据库连通性),标准 HTTP 状态码与结构化 JSON
- 文件服务:统一上传/下载(流式、Range 断点续传、限速)、图片自动压缩
- 邮件服务:MailKit 实现,SMTP 配置从数据库动态读取
- 多数据库:SQLite / SQL Server / MySQL / PostgreSQL / Oracle 平滑切换