更新日志
📝 [v2.3.1] - 2026.09.19
🐛 问题修复
- 文件上传不再被误挡成 401:移除
FileUploadController 上叠加的 [Authorize]。框架的登录态是自定义加密 Cookie,并非 ASP.NET Core 标准认证方案;叠加该特性会让请求在进入控制器之前按"默认认证方案"校验,宿主项目若把自己面向站点用户的 Cookie 设为默认方案,后台管理员上传时会被直接挡成 401,而控制器内的 IsLogin() 判断根本没有机会执行。现统一由 IsLogin() 判定并返回 401。
- 编辑器保存远程图片 CSRF 失败修复:编辑器改为写请求前先取 Antiforgery 令牌并带上请求头(头名由服务端下发,不写死),令牌失效时自动刷新重试一次;取令牌失败会在控制台输出原因,不再静默失败。
📝 [v2.3.0] - 2026.09.17
🔒 安全加固
- 通知 Hub 越权修复:
NotificationHub 改为必须认证,用户组只按服务端解析出的当前用户加入/移除;删除可传入任意 userId 的 JoinGroup / LeaveGroup,前端改为随连接携带签名票据
- HtmlEditor 上传 CSRF 防护:上传与保存远程图片接口增加认证与 Antiforgery 校验,校验失败返回 400 而非 500;编辑器通过
X-CSRF-TOKEN 请求头携带令牌
- 远程图片下载 SSRF 加固:禁止自动重定向,逐跳重新做地址校验(最多 3 次、禁止 HTTPS 降级);通过连接回调锁定已校验 IP,杜绝 DNS Rebinding;响应流式落盘,避免内存无限增长
- Excel 导入数据权限:导入、批量更新、批量删除统一走数据权限校验,不能再靠伪造主键越权操作他人数据
- 私有文件下载:新增受控下载接口
/api/files/{id},校验登录、租户、文件记录与授权;公开文件仍走原有静态地址,行为不变
- 路径安全:新增统一安全路径服务,代码生成器、上传、下载、模板等路径全部做根目录包含性校验,路由路径增加白名单
- 登录票据认证:新增认证处理器,使
[Authorize] 能识别框架现有的加密 Cookie 登录态
🔐 多租户隔离
- 移除二级容器:多租户扩展不再使用
BuildServiceProvider(),FreeSqlCloud 改由服务提供者工厂注册
- 建表并发保护:同一租户的初始化串行化,避免并发请求重复建库建表
- 租户编码白名单:创建、切换与获取租户数据库前统一校验编码,避免其进入数据库名、文件路径与缓存键
- 缓存与 Redis 隔离:系统参数、权限、下拉/树/字典缓存及聊天 Redis 键全部带上租户前缀,租户之间不再共用业务缓存与锁
⚖️ 审批一致性
- 事务化:提交、同意、驳回、撤回、转交全部纳入数据库事务,任一步失败整体回滚,不再出现半成功数据
- 并发保护:所有状态变更改为条件更新,并发审批/转交/撤回只会成功一次,不会重复推进节点或产生重复审批记录
- 通知时机:站内信与实时推送统一移到事务提交之后,提交失败绝不通知成功
- 服务端权威:审批人、当前节点、下一节点、审批级次完全由服务端按流程配置决定,客户端无法指定或跳节点
- 转交资格校验:转交目标必须属于当前租户且处于启用状态,禁止转交给发起人
- 审批意见防 XSS:意见按纯文本存储并做 HTML 实体编码,同时限制长度
- 流程配置校验:配置加载后立即校验级次连续性、审批人来源合法性与节点数量上限,非法配置直接拒绝执行
- 异常信息收敛:审批失败只返回通用提示与 TraceId,详细异常仅写日志
- 审计字段:审批记录新增操作人、变更前后状态与流程实例标识,转交与撤回可完整追溯
🐛 问题修复
- 右上角通知重复显示:修复数据库未读列表与 SignalR 实时推送同时到达时同一条消息被插入两次的问题
- PBKDF2 参数升级:密码哈希升级为带版本与迭代次数的新格式,旧密码仍可正常登录并在登录成功后自动重新哈希
- 上传状态码语义化:未登录 401、无权限 403、参数错误 400、文件过大 413、格式不支持 415,不再所有错误都返回 500
- 上传大小双层限制:HTTP 解析层与业务层都做 10MB 限制
- 微信匿名接口防刷:登录、解密与生成小程序码增加参数校验、限流与超时,错误不再回传外部接口细节
- 数据库日志限流:写库失败时使用有界缓存与指数退避,恢复后自动补写,并补充 TraceId、请求路径、用户与租户字段
- 同步阻塞消除:移除
GetAwaiter().GetResult() 之类的同步阻塞异步写法
- 计划任务时区可配置:时区不再硬编码,默认保持原有中国时区行为
- 雪花 ID 启动校验:WorkId 保持 6 bit,超出范围启动即报错,提示多实例配置不同 WorkerId
✨ 新增功能
- 统一安全配置:新增
Security 配置节,集中管理上传大小、重定向次数、登录锁定、CSRF 与限流参数,并附示例
- 全局异常处理:接口异常统一转成友好提示 + TraceId,详细异常只写日志
📝 [v2.2.18] - 2026.09.08
✨ 新增功能
- 保存后页码保留:编辑已有数据保存后停留在当前页码,不再跳回第一页;仅新增时才回到第一页展示最新记录(“保存并关闭”与“保存不关闭”一致)
- 更换数据库指南:新增《更换数据库类型》文档,介绍如何从 SQLite 切换到 MySQL / SQL Server / PostgreSQL 等 FreeSql 支持的数据库
- Serilog 文件日志配置指南:新增《Serilog 日志配置》文档,提供与框架数据库日志并存的接入方式(
writeToProviders: true)
🐛 问题修复
- 文件上传提示修复:上传过程任何异常(磁盘/权限/图片处理/数据库等)统一转为“上传失败”提示;上传弹窗增加 60 秒超时自动关闭兜底,避免“上传中”提示永久不关闭
- 在线聊天“操作已取消”错误修复:修复 SignalR 连接与在线状态维护在取消/释放时抛出的 “The operation was canceled” 错误,避免在线用户状态异常
- 强认证下聊天/通知自连接失败修复:通知与聊天原先用公共域名做服务端自连,强认证(HttpOnly Cookie)、反向代理或局域网 IP 访问时服务器连不回自己导致 SignalR 连接全部失败、聊天永远离线、页面反复刷新;现改为使用 Kestrel 实际监听地址,连接失败只降级相关功能,不影响页面与电路
- 菜单 PathLower 空引用防护:后台菜单过滤对
PathLower 判空,避免空值导致布局崩溃
- 代码生成行布局修复:生成页面编辑字段数量较少时正确包裹
row form-inline 容器
- MailKit 版本升级:邮件扩展显式引用 MailKit 4.17.0,避免与 NETCore.MailKit 传递依赖冲突
📝 [v2.2.17] - 2026.08.30
✨ 新增功能
- 编辑弹窗保存按钮 loading:新增/编辑窗口点击“保存”或“保存并关闭”任意一个后,两个按钮同时显示加载状态并禁用,保存出错(含异常)自动恢复可点击,同时防止重复提交
- 表格查询期间显示 loading:AdminTable 数据查询中空行不再闪现“无数据”,查询完成前显示加载指示,结束后才根据结果展示数据或“无数据”
- 导出性能大幅优化:AdminTable 导出只查询表格可见列(动态 DTO 投影),不再 SELECT * 拉取大文本/导航数据;导出时跳过 Include/IncludeMany 导航集合加载(查询事件新增 IsExport 标记);Excel 直接以 MiniExcel 写入,Lookup 列只解析一次;远端数据库场景下数千行导出从分钟级降到秒级,导出文件只包含可见列
- 点击导出立即提示:导出时表格工具栏显示“正在导出”徽标(服务端状态驱动、非阻塞),一点导出即出现,完成或出错自动消失
- Data Protection 密钥持久化:新增 DataProtectionKeyPath / DataProtectionApplicationName 选项,可将认证 Cookie 加密密钥持久化到固定目录并固定应用名,IIS 程序池重启后不再强制重新登录
🐛 问题修复
- 解决方案构建修复:EasyAdminBlazor.AliyunSms 扩展目标框架由 net9.0 修正为 net10.0,并统一所有项目版本号
- 消息中心连接泄漏修复:Widget 组件重写 DisposeAsync(bool) 释放 SignalR 连接,修复组件销毁时连接未释放的问题
- AdminTable 权限包装逻辑修复:内部默认保存/删除委托不再在二次渲染时被重复包装(原方法组比较恒为 false 导致重复权限校验)
- 启用/禁用开关可靠性修复:用户、菜单、组织页面的启用/禁用切换改为等待数据库写入,失败时回滚开关状态并提示错误
- Redis 消息落库健壮性:反序列化失败的条目不再传入数据库写入
- 微信支付证书加载现代化:改用 X509CertificateLoader 替代已过时的 X509Certificate2 构造函数;平台证书缺失时给出明确错误日志
- 用户角色搜索“无法匹配 Roles”修复:忽略搜索列改为在组件首次渲染前提取,避免首次查询竞态导致导航集合(Roles)过滤直接传入 FreeSql 报错;动态过滤剪枝后不再残留空壳节点
- 演示项目移除未使用的 Session 中间件:应用本身不使用 ASP.NET Session,移除后不再出现“Error unprotecting the session cookie”警告
- 测试代码现代化:日志队列测试改用异步等待,消除阻塞调用
📝 [v2.2.16] - 2026.08.22
✨ 新增功能
- 企业站前台 Tailwind 模板:新增 easyadmin-frontend skill(corporate 模板,Tailwind CSS 简洁大气风格);前台新增首页/服务/产品/新闻/联系我们,新闻含分类筛选与评论(验证码+审核),导航含后台入口;新增 Service/Product/Feedback 实体与后台 CRUD 页面;初始化服务/产品示例数据与演示菜单(服务/产品/留言反馈),博客菜单更名 新闻管理/新闻分类(中英文);移除旧 Themes 主题功能
- EasyAdminBlazor.Mail 新增腾讯云邮件推送(SES):直接调用腾讯云 API(TC3-HMAC-SHA256 签名),不引入 SDK
- 邮件服务商切换:新增
Mail:Provider 配置(Smtp / SendCloud / TencentCloud),默认 Auto 自动选择(SendCloud → 腾讯云 → SMTP),调用方无需改代码即可切换
- 模板邮件:腾讯云模式下
SendTemplateEmailAsync 传模板ID(数字),模板参数自动转为 TemplateData JSON
- 后台配置:系统配置页新增 SendCloud / 腾讯云参数分组,各组均支持发送测试邮件;显式指定
Mail:Provider 时只展示对应服务商的配置项,Auto 时才展示全部
- 按调用指定服务商:
SendEmailAsync 新增可选的 provider 字符串参数("Smtp" / "SendCloud" / "TencentCloud"),调用时可临时指定;服务商由 Mail 扩展解析,Core 不依赖具体服务商,后续新增服务商无需发布 Core
- 配置页数据驱动:后台"邮件测试"由配置贡献者声明驱动(
IsEmailProvider / EmailRequiredKeys),新增邮件服务商只需在 Mail 扩展中加贡献者类,无需再改 /Admin/Config
- 数据权限接口自动开启:AdminTable/AdminMultiSelect/AdminSelectTable 在实体实现 IDataPermission+IEntityCreated 时自动启用数据权限,无需页面显式配置
- 前台底部官网链接:前台公共布局底部增加官网入口
- AI 助手配置文档:新增
doc/AI助手配置.md(含英文版),介绍 easyadmin-conventions / easyadmin-frontend 技能与企业站模板在 ChatGPT / Cursor / Claude 中的使用方式
🐛 问题修复
- 腾讯云邮件 API 业务错误误判修复:腾讯云 API 3.0 对业务错误也返回 HTTP 200,错误在响应体
Response.Error 中,现会正确识别并返回失败
- 邮件发送失败原因写入错误日志:SendCloud / 腾讯云发送失败原因以 Error 级别写入错误日志(错误日志只记录 Error 及以上级别)
- 官网域名拼写修正:easyadmim 修正为 easyadmin(后台布局、首页、README、文档)
- 租户主键冲突修复:删除 SysTenant.Id 遗留 AOP 分支,long 主键不再被 ToLower() 且恢复雪花 ID 生成,修复新增第二个租户时主键冲突
- 企业站菜单种子幂等修正:迁移旧格式 /Admin/Service 路径、Path 统一为 Admin/*,避免重复插入菜单;首页文档解析正则与 csproj 清理
- AuthPath 状态残留修复:带按钮参数时同步更新 AuthPathSuccess,页面主体不再残留旧状态
- Redis 订阅异常保护:RedisService.Subscribe 反序列化失败不再中断订阅
- 空引用与警告清理:HexToBytes 返回类型修正为 byte[]?;Chat.razor / FileUploadController / Generator.Model 消除空引用与未赋值警告;移除 MainLayout 中的 Console.WriteLine 调试残留
- 更新日志不显示修复:后台首页可正常展示更新日志
🔧 重构与其他
- 精简解决方案:删除 EasyAdminBlazor.Api.Host 与 EasyAdminBlazor.Application 项目;博客实体 Article/Classify/Comment 移入 EasyAdminBlazor.Test/Entities/Blog(命名空间不变);解决方案与 csproj 引用同步更新;skill 与 doc 补充分层架构说明(共享层 + 多宿主入口模式),移除本地路径引用
- 版本统一:EasyAdminBlazor / EasyAdminBlazor.Core / EasyAdminBlazor.Mail 等包版本统一升级到 2.2.16
📝 [v2.2.15] - 2026.08.15
✨ 新增功能:后台主题色切换
- 主题色切换器:顶栏新增调色板下拉,内置默认蓝、清新绿、典雅紫、活力橙、中国红 5 种主色,切换即时生效并持久化到本地
- 默认主色配置:
EasyAdminBlazorOptions.DefaultThemeColor 可配置系统默认主色,用户未手动选择时生效
- 全组件主题覆盖:主色按钮、标签页激活、菜单、日历、表单焦点、下拉选中、TinyMCE 编辑器、链接色等跟随主色,深浅色模式均生效
- 登录页主题同步:登录页应用用户保存的主题色或配置的默认主色,与后台保持一致
🐛 问题修复
- 用户批量操作逻辑修正:未选择角色/部门/密码时不再直接执行,给出提示;批量操作增加空选保护
- 删除引用保护:角色被用户引用、菜单被角色引用、组织存在子组织或用户时阻止删除,避免脏数据
- 角色保存空权限保护:未选择任何菜单权限时提示,不再保存空权限角色
- 菜单显示按钮状态修正:复选框状态与逻辑保持一致
- 字典导入父级串位修复:多分类导入时字典项不再全部挂到最后一个分类下
- 配置页测试邮件校验修正:只校验 SMTP 配置项,不再因其他配置为空误报;短信测试增加成功/失败/异常反馈
- 任务调度修复:下次运行时间由服务端填充避免索引越界;编辑已有任务时保留原轮次,不再强制覆盖为永久
- 个人资料保存后同步:修改昵称/邮箱/手机后顶栏立即更新,无需刷新
- 文件上传空列表提示:未选择文件时不再提示"成功上传 0 个"
- 选择组件缓存修复:缓存键由表达式引用哈希改为表达式字符串,解决缓存永不命中导致的重复查库
- 操作日志越界保护:无参删除方法不再访问不存在的参数
- 代码生成器容错:程序集扫描增加 ReflectionTypeLoadException 容错,避免页面打不开
- 登录页主题色应用:登录页现在应用用户保存的主题色或配置的默认主色,与后台一致
- 标签页标题本地化:/Admin 标签页标题支持中英文(控制台/Home)
📝 [v2.2.14] - 2026.08.14
⬆️ 依赖升级
- BootstrapBlazor 升级至 10.9.2:修复
ColumnVisibleItem 废弃 API 兼容问题
- FreeSql 相关包统一升级至 3.5.311(
FreeSql.Extensions.AggregateRoot、FreeSql.Extensions.JsonMap、FreeSql.Provider.Sqlite、FreeSql.Provider.MySqlConnector),FreeSql.Cloud 保持最新 2.0.1
🔒 安全修复
- 修复站内信存储型 XSS:消息/通知内容渲染前进行服务端 HTML 净化(移除 script、事件属性、
javascript: 链接等),聊天 Markdown 渲染增加 HTML 编码防护
- 修复 AdminSelectTable 数据权限绕过:按已选 Id 回填实体时同样应用数据权限过滤,防止低权限用户越权读取记录
- 修复 ChatHub 身份冒用:SignalR 连接时用登录 Cookie 校验身份,发送消息时校验发送者与登录用户一致,杜绝伪造 userid 冒充他人收发消息
- 修复数据权限 Custom 配置回退为"无可见数据"(fail-closed),避免配置异常时越权看到全部数据
- 登录页安全增强:UAParser 单例复用、IP 解析失败回退
unknown、登录失败计数进程内锁、验证码调试输出清理
🐛 问题修复
- 修复强制改密弹窗崩溃:
DialogService.Show 延迟到首帧渲染后调用,避免 BootstrapBlazorRoot 未注册时抛异常;改密成功后自动关闭弹窗并刷新登录态
- 修复打印模块 SQL 方言兼容:分页查询按数据库类型生成
TOP/LIMIT/FETCH FIRST,参数化查询,不再静默吞错
- 修复打印模板目标实体为空:程序集扫描增加
ReflectionTypeLoadException 容错
- 修复报表设计器脚本加载:
eval + 同步 XHR 改为标准 <script> 注入(避免 CSP 拦截、重复加载),生成 HTML 字段名转义
- 修复消息删除越权:删除仅解除当前用户关联,不误删他人消息
- 修复编辑用户密码留空覆盖原密码
- 修复批量删除受保护项被删除:剔除超管/管理员后删除
- 修复权限缓存版本号失效:权限变更后立即失效缓存
- 修复草稿保存不关闭时旧键残留
- 修复 Cron 表达式未校验:新增任务预校验,非法表达式回退 5 秒
- 修复聊天组件资源泄漏:补全定时器与 SignalR 连接释放、beforeunload 引用释放
- 修复邮件服务 HttpClient 泄漏:改用
IHttpClientFactory 管理连接
- 修复新租户管理员未强制改密
- 修复 AdminTable 删除空集合空引用
✨ 其他改进
GetConfig 不再抛异常并增加 1 分钟缓存
- 租户数据库类型下拉显式数据源,移除任务调度模板中无消费者的"HTTP请求/清理任务数据"模板
- 新增 XSS 净化等单元测试,测试用例 156 → 160
📝 [v2.2.12] - 2026.06.17
🖨️ 新增:打印模板设计器 (重磅功能)
- 可视化打印模板设计:新增
/Admin/PrintTemplate 页面,用户可通过可视化界面设计打印模板
- 与 AdminTable 联动:如果实体存在对应的打印模板,
AdminTable 自动显示「打印」按钮,选择记录即可一键打印
- 打印服务抽象:新增
PrintService,支持在任何地方调用打印功能
🎨 打印设计器增强
- 两列布局插入按钮:模板设计器支持一键插入两列布局,方便设计分栏打印样式
- 中英文多语言支持:完善打印模块的国际化翻译(
zh.json / en.json)
🐛 修复
[v2.2.11] - 2026.06.13
♻️ 架构重构
- 认证中间件拆分:将
EasyAdminAuthStartupFilter(内联 120 行)重构为三个独立中间件,各司其职
AdminRouteSecretMiddleware:管理后台路由混淆保护
AuthCookieMiddleware:Blazor Server Cookie 桥接端点
CookieOptionsHelper:共享 Cookie 安全策略工厂,消除重复代码
- 扩展类命名空间规范化:9 个无命名空间的扩展类(
UtilConvertExtension、StringExtension 等)统一加入 EasyAdminBlazor.Infrastructure.Extensions 命名空间,避免 NuGet 消费者命名空间污染
- 破坏性变更:SysLoginLog.LoginType类型。升级到本版本后,请手动执行:migrate_enum_v.2.2.11.sql
🧪 测试覆盖
- 新增单元测试项目
EasyAdminBlazor.Tests(xUnit + Moq + FluentAssertions)
- 150 个测试用例,覆盖安全校验、实体体系、扩展方法、UA 解析、加密工具、日志基础设施
- 测试安全关键路径:重定向防攻击、SSRF 防护、文件魔数校验、PBKDF2/AES 加解密
🔧 优化改进
- UAParser 单例化:
AuthService 改为构造注入 UAParser 单例,避免每次登录重新编译正则表达式
OperationLogAttribute 参数截断保护:序列化参数上限 2000 字符,超过自动截断防止撑爆内存
DatabaseLoggerBackgroundService 异常兜底:增加通用异常捕获,防止意外异常导致日志服务永久停止
🛡️ 安全增强
- SSRF 防护修复:
FileSecurityValidator.IsSafeRemoteUri 中 UriHostNameType 非 [Flags] 枚举,误用 HasFlag 导致私有 IP 地址绕过安全校验,已修复
- 管理后台路由 secret 独立为中间件,更可控的管道顺序
🌐 国际化
- 枚举值英文化:所有中文枚举成员改为英文(整数值不变,向后兼容)
SysLoginLog.LoginType:{ 登陆成功, 登陆失败 } → { Success, Failure }
SysOrg.OrgType:{ 集团, 公司, 部门, 供应商 } → { Group, Company, Department, Supplier }
OperationResult:{ 成功, 失败 } → { Success, Failure }
OperationType:{ 查询, 添加, 修改, 删除, 导入, 导出 } → { Query, Add, Update, Delete, Import, Export }
🐛 问题修复
- 修复草稿计时器不重启:
OnSaveWithoutClose 中 _restartDraftAfterClose 标志在对话框关闭后才设置,导致计时器永不再启动,手动点击也不响应
- 修复导航属性 Nullable 标注:
SysUser.Org、SysOrg.Parent、SysMenu.Parent 等导航属性正确标记为可空,消除 null! 滥用
[v2.2.10] - 2026.06.07
🎉 新增功能
- 全新代码生成器:可视化生成 CRUD 页面(仅本地开发环境有效)
- 旧版代码生成器已废弃,请自行添加以下Url为后台菜单:Admin/CodeGenerator
- AdminTable 草稿功能
EnableDraft:自动保存表单数据到 localStorage
EnableSaveWithoutClose:保存后不关闭窗口
DraftAutoSaveInterval:自定义保存间隔(默认 30 秒)
- 编辑框草稿智能恢复:有内容变更才询问,无改动自动清理
- 保存窗口新增「保存不关闭」按钮
🔧 优化改进
- 拆分
AdminContext 为多个 partial 类,代码更清晰
- 文件选择组件
AdminFileInput 支持直接复制路径
- 数据库日志改为异步队列写入,减少请求阻塞
- 日志支持批量入库 + 队列大小限制
- 服务停止时自动 flush 剩余日志
FileService 改用 IHttpClientFactory 管理 HttpClient
- 清理 Core 项目中的 nullable 警告
🛡️ 安全增强
- Cookie 认证:移除 JS 读写 fallback,统一通过服务端写入 HttpOnly Cookie
- 开放重定向修复:登录及认证接口安全加固
- SSRF 防护:远程图片保存增加安全检查
- 文件上传:增加真实内容检测,校验流大小限制
- 登录票据改用 ASP.NET Core Data Protection 保护
- 登录限流 IP 获取改为可信代理模式(不再直接信任
X-Forwarded-For)
🐛 问题修复
- 修复
AdminContext 中 HttpContext 可能为空的异常
- 优化登录/退出跳转逻辑,兼容 Blazor Server WebSocket 场景
📚 文档更新
- 新增《代码生成器》中英文文档
- 更新《AdminTable》《菜单管理》《数据权限》《项目介绍》文档
[v2.2.9] - 2026.05.30
新增 🎉
[v2.2.6] - 2026.05.29
新增 🎉
修复 🐛
- 避免 Chat 定时器在 DI 已释放时访问服务导致 ObjectDisposedException
- AdminContext 增加 IsAdmin 属性
- 修复 OnBeforeQuery 里
e.Select.OrderByDescending 不生效的问题
- 修复登录没获取到 IP 地址的问题
- 修复没有修改权限时还能切换行内 Switch 的问题
- 修复 BootstrapBlazor 编辑窗口提交按钮一点就 Loading 的问题
- 修正不安装 EasyAdminBlazor.Scheduler 扩展无法登录的问题
重构 📦
- 重构默认排序逻辑
- 优化 FreeSql 非多租户模式下的注册
- 同步 NuGet 版本号
文档 📝
- 新增大量文档:AdminTable、多租户、多语言、数据权限、文件管理等
- 更新快速上手文档
- 增加项目介绍文档
v2.2.0 — 2026.05.23
- 重构:FreeRedis 以扩展方式提供(
EasyAdminBlazor.Redis)
- 重构:计划任务以扩展方式提供(
EasyAdminBlazor.Scheduler)
- 重构:多租户以扩展方式提供(
EasyAdminBlazor.MultiTenant)
- 重构:缓存以扩展方式提供(
EasyAdminBlazor.FusionCache)
- 重构:FusionCache 作为扩展项目提供
v2.0.x — 2026.05.22 ~ 2026.05.23
v2.0.x — 2026.04.09 ~ 2026.04.15
- 重构:架构分层,数据跟 UI 分开,以适应多层架构
- 新增:登录增加登录城市记录
- 优化:完全适配移动端
- 修复:移除 BootstrapBlazor 的 WebClient,解决超时异常
- 增强:
AdminSelectEntity.razor 改为可绑定任意字段
- 修复:保存异常时不能再次点击保存
- 修复:修正
OrgId 硬编码问题,Flags 类型匹配时优先取 Column(Name=值)
- 增强:表格的筛选和高级查询增加 Flags 枚举支持
v2.0.x — 2026.03.01 ~ 2026.03.20
- 新增:给文件上传 Picker 增加权限
- 新增:通过安全码访问后台
- 新增:增加 SendCloud 邮件发送
- 修复:解决多项目任务计划添加失败问题
v2.0.x — 2025.12.31 ~ 2026.02.22
- 优化:TinyMCE 不能修改图片 alt 的问题
- 新增:菜单增加是否显示隐藏
v2.0.3 — 2026.01.03
- 集成:直接集成 FusionCache
- 增强:缓存增加
GetOrSet 方法
v2.0.1 — 2026.01.01
- 增强:管理员列表增加是否有效快速更改项
- 增强:加密密钥可自定义
- 增强:加密登录 Cookie
- 增强:验证码和登录错误次数在配置 Redis 的情况下用 Redis 存储,没有 Redis 则用内存存储
v2.0.0 — 2025.12.31
- 升级:升级为 .NET 10
- 升级:升级所有 NuGet 包到最新版
v1.4.7 — 2025.06.06 ~ 2025.11.25
- 新增:上传参数可配置
- 增强:更改树形组件的排序属性为 string 类型
- 修复:修复模糊查询不出记录的问题
- 新增:增加图片验证码扩展(
EasyAdminBlazor.Captcha)
- 修复:修复组织负责人不能指定的问题
- 新增:增加微信接入扩展(
EasyAdminBlazor.WeChat)
- 优化:整体优化与 bug 修复
[1.4.6] - 2025-06-02
新增功能
- 编辑器增加粘贴上传功能
- 编辑器增加远程图片下载和本地图片拖动上传功能
- AdminTable组件增加根据字典数据自定义导入方法
修复问题
[1.4.5] - 2025-06-01
新增功能
- 增加菜单收藏功能
- 登录验证码增加可配置是否显示
- 系统名称增加可配置是否显示
- 帮助链接增加可配置是否显示
- 消息中心增加可配置是否显示
- 增加AdminSelectTreeEntity组件
- 增加字典多选组件AdminDictMultiSelect
- 增加AdminTree组件(可根据实体生成树,不用查询数据再绑定,其它Admin开头的数据类组件都是这个效果)
- AdminTable组件增加根据字典数据自定义导入方法
[1.4.0] - 2025-05-29
新增功能
- 优化页面权限验证
- 增加默认租户ID
- 消息提醒查看增加上一条下一条
- 将聊天组件单独作为扩展项目
- 增加强制用户修改密码功能
- 增加可上传类型提示
- 优化文件上传逻辑,增强文件上传安全检查
- 将邮件发送,短信发送,富文本编辑器独立成扩展方便后期更换
- 文件选择样式调整
- 任务计划增加日志查看
[1.3.0] - 2025-05-26
新增功能
[1.2.0] - 2025-05-25
新增功能
- 增加站内信
- 增加系统通知
- 风格调整
- 文件选择、富文本及其它组件夜间模式完善
[1.1.0] - 2025-05-22
新增功能
- 用户增加批量设置角色、部门、重置密码功能
- 组织架构增加负责人绑定
- 增加组织结构图
- 增加字典批量导入导出
- AdminSelectTable组件增加Id绑定
@bind-ValueId="v.ArticleId"
修复问题
- 修正租户ORM对象偶尔丢失问题(改为每次URL改变后重新获取)
- 登录成功后未重置密码错误计数
- 修正功能菜单单个选择时未返回选中项问题
[1.0.0] - 2025-05-15
初始版本