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

SmileXAdmin 仪表盘
SmileXAdmin 仪表盘

后端基于 .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
ORMSqlSugar多数据库、读写分离、逻辑删除
认证JWT + BCryptHMAC-SHA256 签名,令牌轮换
缓存FusionCache内存 L1 + Redis L2 二级缓存
日志Serilog控制台 + 文件滚动 + 日志落库
定时任务Hangfire数据库驱动,Cron 调度
映射Mapster实体 ↔ DTO 自动映射
ExcelMiniExcel流式引擎,逐行读写
前端框架Vue 3 + TypeScriptComposition API + script setup
UI 组件Element Plus按需引入,CSS 变量主题
图表ECharts按需引入,控制打包体积
测试xUnit + Moq129 个自动化测试用例

体验说明

欢迎试用 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 平滑切换