Tech Blog

Sharing .NET, Blazor, and full-stack development insights

3 articles Filtering by: Blazor多租户
Original 2026-09-30 684

EasyAdminBlazor 多租户 Redis 隔离:数据库隔离了,缓存还可能串租户?

EasyAdminBlazor多租户缓存隔离的核心方案是统一前缀 tenant:{code}:。数据库虽已隔离,但内存缓存和 Redis 是跨租户共享的,不加前缀会导致系统配置、权限菜单、字典选择器、审批流程配置乃至分布式锁全部串租户。框架为所有业务键统一拼前缀,无租户时回退 tenant:main:,并用测试锁定行为。唯一例外是在线状态键为全局共享,需要隔离时需自行调整。

Read More
Original 2026-09-30 865

EasyAdminBlazor 动态创建租户数据库:AutoSyncStructure 到底做了什么?

EasyAdminBlazor通过 AutoSyncStructure 实现租户数据库动态创建:新租户保存后,自动构建 FreeSql 实例并生成全部表结构,无需人工脚本。随后幂等初始化系统配置、管理员角色与账号(默认密码为租户编码+123),并递归同步菜单至租户库。单进程内用锁与双重检查保证并发安全,多实例需分布式锁配合。

Read More
Original 2026-09-29 717

EasyAdminBlazor 多租户源码解析:为什么采用独立数据库隔离?

EasyAdminBlazor的多租户实现采用独立数据库隔离,而非 TenantId 行级方案。核心链路四步走:按请求 Host 在主库 SysTenant 表匹配租户,每请求只解析一次;AdminContext.Orm 根据解析结果返回主库或租户库的 FreeSql 实例;数据库物理隔离,文件按租户编码分目录,缓存加租户前缀;租户编码必须过白名单正则,防止路径穿越与注入。独立库的代价是新租户建表必须自动化,这正是 AutoSyncStructure 的用武之地。

Read More