多租户

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 句柄