# EasyAdminBlazor **Repository Path**: gudufy/EasyAdminBlazor ## Basic Information - **Project Name**: EasyAdminBlazor - **Description**: EasyAdminBlazor是基于 .NET 10 + Blazor 技术栈的企业级后台管理框架,由 BootstrapBlazor 组件库驱动 UI,FreeSql 提供数据访问能力。功能全面、开箱即用、扩展灵活,完美兼容 PC 端与移动端小屏设备,是个人开发者接私活、外包项目的利器。 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: https://easyadmim.wang-zhan.com.cn/ - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 0 - **Created**: 2025-05-21 - **Last Updated**: 2026-07-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EasyAdminBlazor
English | 中文
**EasyAdminBlazor** 是一个基于 **.NET 10 + Blazor** 技术栈的企业级后台管理框架,由 **BootstrapBlazor** 组件库驱动 UI,**FreeSql** 提供数据访问能力。功能全面、开箱即用、扩展灵活,是个人开发者接私活、外包项目的利器。 🌐 **官方网站**:[https://easyadmim.wang-zhan.com.cn](https://easyadmim.wang-zhan.com.cn) --- ## ✨ 核心特性 ### 🧩 模块化架构 核心功能与扩展功能解耦,通过 NuGet 扩展按需安装,避免功能臃肿: | 模块 | 说明 | | -------- | ----------------------------------------------- | | 用户管理 | 用户增删改查、状态管理、多端登录检测 | | 角色管理 | 基于角色的权限分配、管理员标识 | | 菜单管理 | 无限级菜单树、按钮级权限、可视化配置 | | 组织架构 | 树形部门管理、数据权限隔离 | | 配置管理 | 系统参数动态配置,支持数据库存储 | | 字典管理 | 通用字典表,支持下拉/多选 | | 日志管理 | 操作日志、登录日志、错误日志,自动记录 | | 文件管理 | 本地文件上传/下载、图片压缩/WebP 转换、分组管理 | ### 🌐 多租户(SaaS) - **独立数据库**:租户使用独立数据库 - **按域名解析**:根据请求的 Host 自动识别当前租户,零配置切换 - **菜单权限隔离**:每个租户可独立分配功能菜单 - **文件存储隔离**:上传文件按租户 code 分目录存储 ### 🌍 多语言 内置本地化支持,可动态切换界面语言,满足国际化需求。 ### 💬 实时聊天 基于 SignalR 实现站内即时通讯,支持消息实时推送、未读提醒。 ### 📋 计划任务 集成 FreeScheduler,支持 Cron 表达式和特性标注 `[Scheduler]`,可视化任务管理。 ### 🔌 可插拔扩展 通过扩展项目按需添加能力: | 扩展 | 功能 | | ----------------------------- | ------------------------ | | `EasyAdminBlazor.Mail` | SMTP 邮件发送 | | `EasyAdminBlazor.Captcha` | 表单验证码 | | `EasyAdminBlazor.Redis` | Redis 缓存/消息持久化 | | `EasyAdminBlazor.FusionCache` | 混合缓存加速 | | `EasyAdminBlazor.Chat` | 实时聊天插件 | | `EasyAdminBlazor.MultiTenant` | 多租户支持 | | `EasyAdminBlazor.Scheduler` | 后台任务调度 | | `EasyAdminBlazor.HtmlEditor` | TinyMCE 富文本编辑器 | | `EasyAdminBlazor.WeChat` | 微信小程序、微信支付集成 | ### 🛡️ 安全特性 - 密码 PBKDF2 加密存储 - Cookie 认证 + AES 加密 - CSRF 防护(Antiforgery Token) - 管理后台路由加密(AdminRouteSecret) - 操作日志审计 - 登录失败次数限制 + 验证码 --- ## 🏗️ 技术栈 | 层级 | 技术 | | -------- | -------------------------------------------------------- | | 框架 | .NET 10 | | UI | Blazor Server / BootstrapBlazor | | ORM | FreeSql(支持 MySQL、Sqlite、PostgreSQL、SQL Server 等) | | 实时通信 | SignalR | | 认证 | Cookie Authentication + ASP.NET Core Identity | | 缓存 | IMemoryCache / Redis / FusionCache | | 任务调度 | FreeScheduler | | 图片处理 | SixLabors.ImageSharp | | ID 生成 | Yitter 雪花算法 | --- ## 🚀 快速开始 ### 环境要求 - .NET 10 SDK - MySQL 8.0+(或其他 FreeSql 支持的数据库) - (可选)Redis ### 全新项目 ```bash # 安装模板包 dotnet new install EasyAdminBlazor.Templates # 使用模板创建项目 dotnet new easyadmin -n MyProjectName # 进入项目运行 cd MyProjectName dotnet run ``` ### 现有项目 ### 第一步:安装 NuGet 包 ```bash # 核心包(必须) dotnet add package EasyAdminBlazor # 数据库支持(根据你的数据库选择其中一个) dotnet add package FreeSql.Provider.MySqlConnector # MySQL dotnet add package FreeSql.Provider.SqlServer # SQL Server dotnet add package FreeSql.Provider.Sqlite # SQLite dotnet add package FreeSql.Provider.PostgreSQL # PostgreSQL ``` ### 第二步:配置 Program.cs ```bash var builder = WebApplication.CreateBuilder(args); var configuration = builder.Configuration; builder.AddEasyAdminBlazor(new EasyAdminBlazorOptions { EnableLoginCaptcha = true, EnableMessage =true, ShowHelp =true, AesKey= "XME2k7nA9vJy9osiU389469Y", AdminRouteSecret= "i4ByMAX4", Assemblies = [typeof(Program).Assembly], FreeSqlBuilder = a => a .UseConnectionString(DataType.MySql, configuration["ConnectionStrings:default"]) .UseMonitorCommand(cmd => System.Console.WriteLine($"[{DateTime.Now.ToString("HH:mm:ss")}] {cmd.CommandText}\r\n"))//监听SQL语句 .UseAutoSyncStructure(true) }) .AddEasyAdminBlazorMail() // 添加smtp邮件扩展 .AddEasyAdminBlazorTinyMCEEditor() // 编辑器扩展 .AddEasyAdminBlazorRedis(configuration["Redis:ConnectionString"]!) .AddEasyAdminBlazorChat() // 聊天插件(依赖redis,没配置则不启用) .AddEasyAdminBlazorWeChat() // 微信插件 .AddEasyAdminBlazorScheduler() // 计划任务扩展 .AddEasyAdminBlazorFusionCache() .AddEasyAdminBlazorMultiTenant() .AddEasyAdminBlazorCaptcha(options => { options.Chars = "0123456789"; }); // 验证码 // Add services to the container. Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); // 注册 Session 服务 builder.Services.AddSession(options => { options.IdleTimeout = TimeSpan.FromMinutes(30); options.Cookie.HttpOnly = true; options.Cookie.IsEssential = true; }); builder.Services.AddAntiforgery(o => o.HeaderName = "XSRF-TOKEN"); builder.Services.AddRazorComponents().AddInteractiveServerComponents(); builder.Services.AddBootstrapBlazorTableExportService(); builder.Services.Configure