SmartAdmin.AspNetCore 10.3.0

Additional Details

请升级到 10.10.0 或更高版本。Please upgrade to 10.10.0 or later.

There is a newer version of this package available.
See the version list below for details.
dotnet add package SmartAdmin.AspNetCore --version 10.3.0
                    
NuGet\Install-Package SmartAdmin.AspNetCore -Version 10.3.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SmartAdmin.AspNetCore" Version="10.3.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SmartAdmin.AspNetCore" Version="10.3.0" />
                    
Directory.Packages.props
<PackageReference Include="SmartAdmin.AspNetCore" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SmartAdmin.AspNetCore --version 10.3.0
                    
#r "nuget: SmartAdmin.AspNetCore, 10.3.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package SmartAdmin.AspNetCore@10.3.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SmartAdmin.AspNetCore&version=10.3.0
                    
Install as a Cake Addin
#tool nuget:?package=SmartAdmin.AspNetCore&version=10.3.0
                    
Install as a Cake Tool

English | 简体中文

<p align="center"> <img src="web/public/icon-192.png" width="80" height="80" alt="SmartAdmin"> </p>

<h1 align="center">SmartAdmin</h1>

<p align="center"> <em>三行代码接入完整后台:认证、RBAC、多机构数据权限、字典配置、日志、文件、定时任务。</em> </p>

<p align="center"> <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-blue" alt="License"></a> <a href="https://github.com/SmartCode-X/SmartAdmin/stargazers"><img src="https://img.shields.io/github/stars/SmartCode-X/SmartAdmin" alt="Stars"></a> <a href="https://github.com/SmartCode-X/SmartAdmin/network/members"><img src="https://img.shields.io/github/forks/SmartCode-X/SmartAdmin" alt="Forks"></a> <a href="https://www.nuget.org/packages/SmartAdmin"><img src="https://img.shields.io/nuget/v/SmartAdmin" alt="NuGet"></a> <img src="https://img.shields.io/badge/.NET-10-512BD4" alt=".NET 10"> </p>

<p align="center"> <a href="https://smartcode-x.github.io/SmartAdmin/zh/"><strong>📖 文档</strong></a>  ·  <a href="https://smartcode-x.github.io/SmartAdmin/zh/guide/getting-started"><strong>🚀 快速开始</strong></a>  ·  <a href="CHANGELOG.md"><strong>📋 更新日志</strong></a> </p>


这是什么

SmartAdmin 是一个以 NuGet 包交付的后台管理系统内核,面向 .NET 10 / ASP.NET Core。用户、角色、菜单、机构、数据权限、字典、配置、日志、文件、定时任务,这些每个后台都要重做一遍的功能装一个包就有,Program.cs 里只需三行:

builder.Services.AddSmartAdmin(builder.Configuration);
var app = builder.Build();
app.MapSmartAdmin();

它和「克隆一个后台模板」的区别在归属:通用功能是包依赖,升级只是换个版本号;仓库里始终只有你自己的业务代码。配套一套自包含的 Vue 3 管理端模板,拷一份就是你项目的前端起点。

亮点

  • 零配置起步:默认 SQLite,首启自动建表、写种子,并在控制台打印一次超管密码。换 MySQL、SQL Server、PostgreSQL 只改一处配置。
  • 不 fork 就能替换:内置服务全部接口背书、TryAdd 注册,你的实现先注册就赢;长方法拆成 virtual 小步,继承后只覆写关心的那一步。这条由契约测试 ReplaceabilityTests 锁定。
  • 多机构数据权限内置:全部 / 本机构 / 本机构及以下 / 仅本人 / 自定义机构,五种范围靠 ORM 全局过滤器自动隔离,业务查询不写机构条件。
  • 权限码即路由GET:/api/v1/xxx 就是权限码,代码里没有权限字符串,授权在角色菜单界面勾路由完成。
  • 依赖克制:内核运行时只依赖 SqlSugarCore 和 Microsoft.*。Redis、Excel、第三方登录都是可选包,不装不进发布产物。
  • 多副本可扩展:可选 Redis 缓存、集群级限流、雪花 WorkerId 自动抢号、反向代理后真实 IP、定时任务数据库选主,两副本以上同一次触发也只跑一次。
  • AI 友好skills/ 把新建实体、搭 CRUD、替换服务、加定时任务写成了标准 skills,AI 助手照着就能生成符合规范的代码。

快速开始

环境

  • .NET 10 SDK
  • Node.js 20+(只在跑前端模板时需要)

方式一:新项目,用模板生成

dotnet new install SmartAdmin.Templates
dotnet new smart-app -n MyApp
cd MyApp
dotnet run

生成的 host 已接线一个机构隔离的示例业务模块(Modules/SampleDoc*),复制那四个文件改名就是你的下一个模块。

方式二:已有项目,装包接入

dotnet add package SmartAdmin

Program.cs 加上前面那三行,JWT、RBAC、数据权限和全部管理端点就注册好了。

首次登录

首启时控制台会打印一段随机超管密码,账号固定 superAdmin,密码只打印这一次:

════════════════════════════════════════════
  SmartAdmin 首次启动,已创建超级管理员
  账号: superAdmin
  密码: xxxxxxxxxxxxxxxx
  此密码仅本次显示,请登录后立即修改!
════════════════════════════════════════════

想要固定密码,配 SmartAdmin:Seed:AdminPassword,只对空库生效。三个探针:/health(存活)、/health/ready(数据库 + 缓存就绪)、/openapi/v1.json(仅 Development 挂载,前端生成类型的数据源)。

换数据库

// appsettings.json
"SmartAdmin": {
  "Database": {
    "DbType": "MySql",                 // Sqlite | MySql | SqlServer | PostgreSQL
    "ConnectionString": "...",
    "CodeFirstVersion": "2026.09.06"   // 可选:版本号不变就跳过建表扫描,表多、库远时启动更快
  }
}

在本仓库里跑一遍

git clone https://github.com/SmartCode-X/SmartAdmin.git
cd SmartAdmin
dotnet run --project backend/samples/MinimalHost   # 后端 → http://localhost:5100
cd web && npm install && npm run dev               # 前端 → http://localhost:5173

Windows 上双击 dev-start.bat 一键起前后端,dev-stop.bat 停。要一条命令起全栈(MySQL + Redis + 后端 + Caddy 托管前端)用 docker compose up,双副本验证用 docker-compose.scale.yml

功能清单

后端内核

领域 内容
认证 账号密码、图形验证码(三种,默认关)、JWT + 刷新令牌轮换、登录锁定、在线会话与强制下线、短信免密登录与二次验证、密码历史与过期策略;可选 TOTP(含恢复码)、Cookie + CSRF 会话模式
外部登录 内置 OIDC,IExternalAuthProvider 扩展点,个人中心绑定 / 解绑;企业微信、钉钉、GitHub、个人微信为可选包
RBAC 角色、目录 / 页面 / 按钮三级菜单、角色菜单授权、角色转授策略;权限码即规范化路由
数据权限 五种数据范围,ORM 全局过滤器强制;用户、机构、文件管理同样遵守调用者范围
多应用门户 模块管理、每应用独立菜单树、登录后选 / 切应用
组织 机构树、岗位、用户多角色与主属机构、回收站(软删恢复与永久删除)
字典与配置 字典类型 / 项、配置中心分组页签、事件驱动失效缓存
通知公告 全员 / 角色 / 用户定向发布;SignalR 实时推送可选开启
日志 操作日志(敏感输入脱敏)、登录日志、异常日志
文件 上传下载、分片续传与秒传、大小与后缀限制、路径穿越防护、签名直链、软删文件磁盘回收
定时任务 内核自带调度器:cron(6 段秒级,含 L / W / #)、固定间隔、一次性三种触发;IAdminJob、HTTP、SQL 三种载荷;数据库选主 + 触发 CAS 防双发;可选独立 Worker 进程
导入导出 xlsx 导入向导(预览、逐格校验、查重、部分提交)与列可选导出,由可选包 SmartAdmin.Excel 提供
数据库 SQLite / MySQL / SQL Server / PostgreSQL 配置切换;同进程副数据库(多 ConfigId);CodeFirstVersion 门控建表扫描
多副本 可选 Redis 缓存、集群级限流、雪花 WorkerId 文件锁抢号(跨机器显式配)、反向代理后真实客户端 IP
其他 IEmailSender(默认 SMTP)、服务器监控、健康探针、开发期 OpenAPI

NuGet 包

作用
SmartAdmin 元包,装它即引入下面四个内核包
SmartAdmin.Core 契约层:接口、Options、Result<T>、错误码、雪花 ID,零运行时依赖
SmartAdmin.SqlSugar 数据层:SqlSugar 单例、CodeFirst 建表、幂等种子、审计 / 软删 / 数据范围全局过滤器、泛型仓储
SmartAdmin.Services 领域层:实体与全部业务服务
SmartAdmin.AspNetCore 宿主层:AddSmartAdmin / MapSmartAdmin、JWT、[RolePermission]、内置控制器与过滤器
SmartAdmin.Excel 可选:xlsx 导入导出
SmartAdmin.Caching.Redis 可选:Redis 缓存提供方,多副本共享会话与缓存
SmartAdmin.Auth.WeCom / .DingTalk / .GitHub / .WeChat 可选:第三方登录提供方
SmartAdmin.Templates dotnet new smart-app 项目模板

全部包共用一个版本号,主版本跟随内核所用的 .NET 主版本(10.x 对应 .NET 10)。

前端模板

web/ 是一套自包含的管理端模板,不发 npm 包,拷一份归你自己改:

技术栈 Vue 3 + Naive UI + Pinia + vue-router + vue-i18n
API 由后端 /openapi/v1.json 生成 schema.d.ts,端到端类型安全,npm run gen:api 刷新
路由与权限 后端菜单树驱动动态路由,多应用切换;v-auth 指令按钮级权限,权限码与后端路由一致
组件 ProTable(列驱动表格)、FormContainer(弹窗 / 抽屉二合一)、StatusSwitch、字典组件集、OrgTreeSelect、FileUpload(分片续传)、ImportWizard、CronEditor、Chart 等,清单见 web/COMPONENTS.md
主题与登录 设计令牌 + 明暗主题,三套可切换登录皮肤,zh-CN / en-US 双语

ProTable、IconPicker 已拆成独立 npm 包(tenon-naive-pro-tabletenon-naive-iconify-picker),任意 Vue 3 + Naive UI 项目都能单装。

运行时架构

一次管理端请求自上而下走过四层:前端 → 宿主(控制器、鉴权管道)→ 领域服务 → SqlSugar 与数据库,每层对应一个 NuGet 包,四层都建在 SmartAdmin.Core 契约层上。缓存、外部登录、实时推送、定时任务与可选的 Worker 进程挂在旁路。

<p align="center"> <a href="docs/architecture/smart-runtime.zh-CN.svg"> <img src="docs/architecture/smart-runtime.zh-CN.readme.png" alt="SmartAdmin 运行时架构" width="100%"> </a> </p>

<p align="center"> <a href="docs/architecture/smart-runtime.zh-CN.svg"><strong>查看矢量图(SVG)</strong></a> </p>

替换与扩展

内置实现不合用就换掉,先于 AddSmartAdmin 注册即可:

builder.Services.AddSingleton<IPasswordHasher, MyPasswordHasher>();   // 你的先注册,内置的让道
builder.Services.AddSmartAdmin(builder.Configuration);

只想改一步,继承内置服务覆写那个 virtual 方法。业务模块放在你自己的程序集里,经 options.ApplicationAssemblies 登记后实体自动建表、控制器自动挂路由。完整流程见文档站的新建业务模块替换内置服务;仓库 skills/ 目录是同一套流程的 agent 版本(/new-module/create-crud-backend/replace-service/create-job 等)。

仓库结构

目录 说明
backend/ 内核 4 包 + 元包 + 6 个可选包,样例宿主(MinimalHostWorkerHost),xUnit v3 测试
web/ Vue 3 + Naive UI 管理端模板,独立运行
templates/ dotnet new smart-app 项目模板
site/ 文档站源码(VitePress,中英)
skills/ 开发规范 skills,供开发者与 AI 助手使用
docs/ 设计文档、ADR、发版手册

版本与贡献

开发在 dev,发布在 mainv* tag 触发打包并发到 nuget.org。变更以 CHANGELOG 为准,破坏性变更在对应版本段落顶部加粗提示。欢迎 issue 与 PR,安全问题按 SECURITY.md 报告。

许可证

Apache License 2.0

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on SmartAdmin.AspNetCore:

Package Downloads
SmartAdmin

SmartAdmin 元包:装这一个即引入全部内核(AspNetCore + Services + SqlSugar + Core)。AI+企业后台管理内核,内置 AI 网关,AI 辅助开发;开箱即用,升级只改版本号。

GitHub repositories

This package is not used by any popular GitHub repositories.