인터페이스는 현지화되어 있으며, Skill 소개와 설명 문서는 선택한 언어로 AI가 자동 번역합니다. 코드·명령어·경로·전문 용어는 원문을 유지하며 원작자 문서가 우선합니다.
Skills 둘러보기
문서 및 사무 · SKILL.md

admin-net-backend

admin-net-backend

Use when building .NET admin/backend management systems with Furion framework — user/role/permission management, CRUD code generation, API documentation. Admin.NET: Furion-based enterprise admin backend scaffold.

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill 문서

GitHub

name: admin-net-backend description: "Use when building .NET admin/backend management systems with Furion framework — user/role/permission management, CRUD code generation, API documentation. Admin.NET: Furion-based enterprise admin backend scaffold." tags:

  • dotnet
  • webapi
  • rbac
  • multitenant
  • furion
  • sqlsugar

项目地址(上游): https://github.com/zuohuaijun/Admin.NET

znlgis 维护分支: https://github.com/znlgis/Admin.NET

后端代码目录: Admin.NET/(.NET 解决方案)

当前版本: v2.4.x(截至2026-09,upstream master Web/package.json 为 2.4.33;TFM net8.0;net10.0)

在线文档: https://adminnet.top/

演示环境: https://demo.adminnet.top(账号:superAdmin.NET / 密码:Admin.NET++010101)

许可证: Apache-2.0(upstream 仓库 LICENSE)

概述

Admin.NET 后端基于 .NET 8 / .NET 10 构建,核心依赖 Furion 框架(动态 API、依赖注入、事件总线、远程请求等)和 SqlSugar ORM(自动建库建表、多租户、多数据库支持)。框架采用分层架构 + 插件式开发,适用于中小企业快速搭建权限管理系统。

核心技术栈:

  • 运行时: .NET 8.0 / .NET 10.0
  • Web 框架: ASP.NET Core + Furion
  • ORM: SqlSugar(支持 MySQL、SQL Server、PostgreSQL、Oracle、SQLite、达梦等)
  • 缓存: NewLife.Redis / MemoryCache
  • 认证: JWT Bearer(Furion.Extras.Authentication.JwtBearer)
  • 实时通讯: SignalR(支持 Redis 背板)
  • 任务调度: Sundial
  • 日志: log4net / Elasticsearch
  • 对象映射: Mapster

项目结构

Admin.NET/                         # 后端解决方案根目录
├── Admin.NET.sln                  # Visual Studio 解决方案文件
├── Admin.NET.Core/                # 核心框架层
│   ├── Attribute/                 # 自定义特性
│   ├── Cache/                     # 缓存工具
│   ├── Const/                     # 常量定义
│   ├── Entity/                    # 核心实体(EntityBase 等基类)
│   ├── Enum/                      # 枚举定义
│   ├── EventBus/                  # 事件总线
│   ├── Extension/                 # 扩展方法
│   ├── Hub/                       # SignalR Hub
│   ├── Job/                       # 定时任务
│   ├── Logging/                   # 日志组件
│   ├── Option/                    # 配置选项类
│   ├── SeedData/                  # 种子数据
│   ├── Service/                   # 核心服务(见下方服务模块表)
│   ├── SignalR/                   # SignalR 配置
│   ├── SignatureAuth/             # 签名认证
│   ├── SqlSugar/                  # SqlSugar 配置与仓储
│   ├── ElasticSearch/             # ES 日志集成
│   ├── Update/                    # 数据库更新脚本
│   └── Utils/                     # 工具类
├── Admin.NET.Application/         # 应用层(业务示例)
│   ├── Configuration/             # 应用配置
│   ├── Const/                     # 应用常量
│   ├── Entity/                    # 业务实体
│   ├── EventBus/                  # 业务事件
│   ├── OpenApi/                   # 开放 API
│   ├── Startup.cs                 # 应用层启动配置
│   └── GlobalUsings.cs            # 全局 using
├── Admin.NET.Web.Core/            # Web 中间件与配置
├── Admin.NET.Web.Entry/           # 启动入口
│   ├── Controllers/               # 控制器
│   ├── appsettings.json           # 配置文件
│   └── wwwroot/                   # 静态资源
├── Admin.NET.Test/                # 单元测试
└── Plugins/                       # 插件目录
    ├── Admin.NET.Plugin.GoView/          # GoView 数据大屏
    ├── Admin.NET.Plugin.DingTalk/        # 钉钉集成
    ├── Admin.NET.Plugin.ApprovalFlow/    # 审批流程
    ├── Admin.NET.Plugin.K3Cloud/         # 金蝶 K3 Cloud
    ├── Admin.NET.Plugin.ReZero/          # ReZero 零代码
    └── Admin.NET.Plugin.WorkWeixin/      # 企业微信

环境准备与运行

前置要求

  • .NET 8 SDK 或 .NET 10 SDK
  • 数据库(SQLite 默认 / MySQL / SQL Server / PostgreSQL / Oracle / 达梦等)
  • Redis(可选,用于缓存和 SignalR 背板)

运行后端

cd Admin.NET
dotnet restore Admin.NET.sln
dotnet run --project Admin.NET.Web.Entry

启动后默认访问 https://localhost:5005,Swagger 文档地址:https://localhost:5005/api

配置文件

主配置文件为 Admin.NET.Web.Entry/appsettings.json,关键配置节点:

{
  "DbConnection": {
    "DbType": "Sqlite",
    "ConnectionString": "DataSource=./admin.net.db"
  },
  "Cache": {
    "CacheType": "Memory"
  },
  "JWTSettings": {
    "ValidateIssuerSigningKey": true,
    "IssuerSigningKey": "your-secret-key",
    "ValidIssuer": "Admin.NET",
    "ValidAudience": "Admin.NET",
    "ExpiredTime": 120
  }
}

核心服务模块

Admin.NET.Core/Service/ 目录下按业务领域划分服务模块:

服务目录说明关键类
Auth/登录认证、Token 管理SysAuthService
User/用户管理SysUserService
Role/角色管理、权限分配SysRoleService
Org/机构 / 组织架构管理SysOrgService
Menu/菜单与按钮权限管理SysMenuService
Pos/职位管理SysPosService
Dict/数据字典管理SysDictTypeService / SysDictDataService
Config/系统参数配置SysConfigService
Tenant/多租户管理SysTenantService
Log/访问日志 / 操作日志SysLogVisService / SysLogOpService
File/文件上传下载管理SysFileService
Job/任务调度管理SysJobService
Notice/通知公告(SignalR 推送)SysNoticeService
OnlineUser/在线用户管理(SignalR)SysOnlineUserService
Message/站内消息SysMessageService
CodeGen/代码生成器SysCodeGenService
Cache/缓存管理SysCacheService
Server/服务器监控SysServerService
DataBase/数据库管理SysDatabaseService
Wechat/微信小程序 / 支付SysWechatService
Alipay/支付宝支付SysAlipayService
OAuth/第三方 OAuth 登录SysOAuthService
OpenAccess/开放接口签名认证SysOpenAccessService
Print/打印模板管理SysPrintService
Region/行政区域SysRegionService
APIJSON/APIJSON 协议支持ApiJsonService
Lang/多语言管理SysLangService
Template/模板管理SysTemplateService
Plugin/插件管理SysPluginService
Enum/枚举查询服务SysEnumService
Const/常量查询服务SysConstService
Common/通用服务CommonService
Schedule/计划任务管理-

实体基类

所有业务实体继承自 EntityBase 或其变体:

/// 实体基类 - 含主键 Id
[SugarTable(null)]
public abstract class EntityBase
{
    [SugarColumn(ColumnDescription = "主键Id", IsPrimaryKey = true, IsIdentity = false)]
    public virtual long Id { get; set; }
}

/// 带审计字段的实体基类
public abstract class EntityBaseData : EntityBase
{
    public virtual long? CreateUserId { get; set; }
    public virtual DateTime? CreateTime { get; set; }
    public virtual long? UpdateUserId { get; set; }
    public virtual DateTime? UpdateTime { get; set; }
    public virtual bool IsDelete { get; set; }  // 软删除
}

/// 带租户的实体基类
public abstract class EntityTenant : EntityBaseData
{
    public virtual long? TenantId { get; set; }
}

服务开发模式与关键模式约定的完整说明见 reference/service-patterns.md

认证与鉴权

JWT 登录流程

POST /api/sysAuth/login
Content-Type: application/json

{
  "account": "admin",
  "password": "加密后的密码"
}

返回:{ "accessToken": "...", "refreshToken": "..." }

使用 Token

Authorization: Bearer {accessToken}

权限控制

  • 菜单权限:通过角色绑定菜单控制页面可见性
  • 按钮权限:通过菜单上的按钮权限标识(如 sysUser:add)做细粒度控制
  • 数据权限:角色可绑定数据范围(全部 / 本部门 / 本部门及以下 / 仅本人 / 自定义)

文件管理

// 上传文件
POST /api/sysFile/uploadFile
Content-Type: multipart/form-data

// 文件存储支持:
// - Local(本地存储)
// - Aliyun(阿里云 OSS)
// - Tencent(腾讯云 COS)
// - Minio
// - QiNiu(七牛云)

代码生成

代码生成器根据数据库表结构自动生成前后端代码:

  1. 在 Swagger 或管理界面中选择数据库表
  2. 配置字段对应的前端控件类型
  3. 一键生成:后端 Service / Entity / DTO + 前端 Vue 页面

插件开发

新建类库项目引用 Admin.NET.Core,在 Plugins/ 目录下组织:

// 1. 新建项目 Admin.NET.Plugin.MyPlugin
// 2. 引用 Admin.NET.Core
// 3. 实现服务
[ApiDescriptionSettings("MyPlugin", Order = 100)]
public class MyPluginService : IDynamicApiController, ITransient
{
    // 业务代码
}

// 4. 在 Admin.NET.Web.Entry 中引用该插件项目即可自动注册

常用第三方集成

功能NuGet 包用途
微信小程序/支付SKIT.FlurlHttpClient.Wechat.*微信 API 对接
支付宝支付AlipaySDKNet.Standard支付宝 API 对接
导入导出Magicodes.IE.Excel / MiniExcelExcel/Word/PDF 导入导出
二维码QRCoder二维码生成
国密算法BouncyCastle.CryptographySM2/SM3/SM4 加密
LDAPNovell.Directory.Ldap.NETStandardLDAP/AD 域认证
短信AlibabaCloud.SDK.Dysmsapi20170525阿里云短信
邮件MailKit / NETCore.MailKit邮件发送
IP 定位IPTools.China / IPTools.InternationalIP 地址解析
限流AspNetCoreRateLimitAPI 访问限流
ES 日志Elastic.Clients.ElasticsearchElasticsearch 日志
OAuthAspNet.Security.OAuth.*第三方登录(微信/Gitee)

开发流程最佳实践

1. 建议每个业务系统单独创建一个工程(参考 Admin.NET.Application 层的结构)
2. 自建应用层引用 Admin.NET.Core 层(不修改核心工程名)
3. Admin.NET.Web.Entry 引用新建的应用层工程
4. 接口 / 服务 / 控制器采用合并模式,不影响自建应用层的使用
5. 可随主仓库升级而升级,避免冲突

AI 使用建议

推荐工作流

  1. 快速搭建:克隆仓库 → 配置数据库连接 → dotnet run → 自动建库建表 + 种子数据
  2. 新增业务模块:参考 Admin.NET.Application 结构,新建实体 → 新建 Service(继承 BaseService<T> 或实现 IDynamicApiController)→ 新建 DTO
  3. 代码生成:在 Swagger 或管理界面选表 → 配置字段控件 → 一键生成后端 Service/Entity/DTO + 前端 Vue 页面
  4. 插件开发:Plugins/ 下新建类库 → 引用 Admin.NET.Core → 实现 IDynamicApiController → 被主项目引用即自动注册
  5. 部署:配置 appsettings.json(数据库/Redis/JWT)→ dotnet publish → Docker 或 IIS/Nginx 部署

关键模式与常见陷阱

  • 实体继承链:EntityBase(仅 Id)→ EntityBaseData(+审计字段/软删除)→ EntityTenant(+租户隔离),按需选择
  • 雪花 ID:主键使用 Yitter.IdGenerator 生成 long 型雪花 ID,不要设置数据库自增
  • 软删除:继承 EntityBaseData 的实体 Delete 默认是软删除(设 IsDelete = true),物理删除用 DeleteByIdAsync
  • 动态 API 分组:[ApiDescriptionSettings("GroupName", Order = 100)] 控制 Swagger 分组
  • 权限控制:[DisplayName("操作名")] 自动注册为权限标识,前端配合 v-auth 指令使用
  • 多租户:实体继承 EntityTenant 后自动按 TenantId 隔离,切换租户用 _rep.Context.AsTenant().GetConnection(tenantDbConfigId)

如何选择正确方案

场景推荐方案
从零搭建后台Admin.NET(Furion + SqlSugar 全家桶)
已有 Furion 项目加权限参考 Admin.NET 的 Auth/User/Role/Menu 模块
仅需 ORM直接用 SqlSugar,不引入 Admin.NET
微服务架构RuoYi-Cloud(Java 生态)

注意事项

  1. 数据库自动迁移:首次启动会自动创建数据库和种子数据,无需手动执行 SQL
  2. 雪花 ID:主键使用 Yitter.IdGenerator 生成雪花 ID(long 类型)
  3. 软删除:继承 EntityBaseData 的实体默认使用软删除(IsDelete 字段)
  4. 多租户:实体继承 EntityTenant 自动按 TenantId 隔离数据
  5. API 分组:通过 [ApiDescriptionSettings("GroupName")] 对 Swagger 接口分组
  6. 权限控制:方法上 [DisplayName("操作名")] 会注册为权限标识,搭配 [Authorize] 使用
  7. 国密支持:通过 BouncyCastle.Cryptography 和 sm-crypto 实现 SM2/SM3/SM4 算法
  8. Docker 部署:后端目录包含 .dockerignore,可直接用 Dockerfile 容器化部署

相关技能


参考资源

저장한 Skills