多租户

tenant

功能概述

多租户(SaaS)是一种软件架构技术,允许一个软件实例同时为多个租户(如企业、组织或个人)提供服务。每个租户拥有独立的数据库,数据完全物理隔离,如同在使用专属的软件实例。

核心优势

  • 成本效益:多个租户共享基础软件设施,降低开发、部署和维护成本
  • 快速部署:新租户可快速接入系统,无需漫长的软件安装配置过程
  • 统一管理:在一个平台上对所有租户进行统一管理,提高管理效率
  • 数据安全:每个租户独立数据库,天然物理隔离,避免数据泄露风险

使用方法

启用多租户

Program.cs 中添加 AddEasyAdminBlazorMultiTenant() 扩展方法,自动启用多租户功能:

builder.AddEasyAdminBlazor(new EasyAdminBlazorOptions { ... })
    .AddEasyAdminBlazorMultiTenant();

租户识别

系统使用请求的 Host(域名)自动识别当前租户。每个租户绑定一个唯一的域名,如:

  • https://tenant1.yourdomain.com → 识别为 tentant1
  • https://localhost:7230 → 开发环境通过端口区分

租户的 Host 字段支持三种格式:localhost:7230https://localhost:7230http://localhost:7230

添加租户(管理员视角)

  1. 登录系统管理后台,在导航菜单中找到 "多租户" 模块进入。
  2. 点击 "添加" 按钮,在弹窗中填写:
    • 基本设置:租户编码(唯一标识,如 vip)、域名、数据库类型、连接字符串、名称、描述
    • 功能菜单:为租户分配可访问的菜单
  3. 点击 "保存",系统自动完成以下操作:
    • 创建租户记录(主库)
    • 数据库中创建租户的管理员角色和初始管理员账号
    • 同步选中的菜单到租户数据库
    • 自动建表(UseAutoSyncStructure

编辑租户

  1. 找到目标租户,点击 "编辑" 按钮。
  2. 修改基本信息或调整菜单权限。
  3. 菜单变更会自动同步到租户数据库。

删除租户

  1. 勾选要删除的租户(可多选),点击 "删除"。

租户登录

租户通过自己的域名访问系统,使用创建时自动生成的管理员账号登录。默认密码规则:{租户编码}123(如 vip123)。

文件隔离

多租户启用时,上传文件自动按租户 code 分目录存储:wwwroot/uploads/{tenantCode}/yyyy/MM/dd/

界面说明

租户列表

  • 租户编码:唯一标识
  • 租户域名:绑定的 Host
  • 数据类型:使用的数据库类型(为空表示使用共享库)
  • 租户名称:显示名称
  • 是否启用:启用/禁用
  • 创建人/创建时间:操作审计信息

编辑弹窗

包含两个选项卡:

  • 基本设置:编码、域名、数据库类型、连接字符串、名称、描述、启用状态
  • 功能菜单:菜单树勾选分配权限(子菜单选中时自动补全父菜单)

相关实体/服务

  • SysTenant — 租户实体
  • ITenantService / MultiTenantService — 租户服务
  • FreeSqlCloud — 多租户数据库调度
  • MainOrmHandle — 主库 ORM 句柄