开发喵星球

RuoYi-Vue-Plus 多租户功能概述(325)

关键点说明

  1. 本框架的多租户功能依赖于 MyBatis-Plus 提供的多租户插件,仅支持简单的租户隔离功能。
  2. 系统默认启用多租户功能。
  3. 涉及多租户业务的数据表必须包含 tenant_id 字段,具体可参考系统中的其他业务表。
  4. 某些表不涉及多租户管理,可以通过配置文件排除。
  5. 只有超级管理员能够执行租户切换操作。

多租户使用步骤

  1. 确保多租户功能已开启(系统默认开启)。
  2. 登录界面中,不同租户的账号、手机号和邮箱需保证唯一,以此识别租户身份。
  3. 设置多租户套餐。
  4. 新增或修改租户时,选择对应的套餐。
  5. 仅超级管理员可以切换租户。

多租户配置详解

application.yml 配置文件中的多租户相关设置如下:

# 多租户设置
tenant:
  # 是否启用多租户功能
  enable: true
  # 排除租户过滤的表
  excludes:
    - sys_menu
    - sys_tenant
    - sys_tenant_package
    - sys_role_dept
    - sys_role_menu
    - sys_user_post
    - sys_user_role
    - sys_client
    - sys_oss_config

⚠️ 注意:若系统已在多租户模式下运行,关闭多租户功能时需要删除 MySQL 和 Redis 中的相关租户数据,重新导入初始 SQL 文件。

忽略多租户过滤

方法一:在 Mapper 接口中使用注解

通过在 Mapper 接口上使用 @InterceptorIgnore 注解,可跳过租户过滤功能。

@InterceptorIgnore(tenantLine = "true", dataPermission = "false")

⚠️ 注意:此注解默认忽略数据权限,若需要开启数据权限过滤,必须显式设置 dataPermission = "false"

方法二:业务层忽略多租户(推荐)

在业务代码中使用 TenantHelper 提供的工具类忽略租户过滤。

// 无返回值
TenantHelper.ignore(() -> { /*业务逻辑*/ });

// 有返回值
Class result = TenantHelper.ignore(() -> { return /*业务逻辑*/ });

方法三:使用注解忽略租户

直接在类或方法上标注 @IgnoreTenant 注解,跳过多租户过滤。

@Component
public class Test {

  @IgnoreTenant
  public void test() {}

}

动态切换租户

特殊情况下切换租户(慎用)

在某些业务场景下,例如创建租户时对该租户执行初始化操作,或查询其他租户的数据,可以通过以下方式动态切换租户。

// 无返回值
TenantHelper.dynamicTenant(租户id, () -> { /*业务逻辑*/ });

// 有返回值
Class result = TenantHelper.dynamicTenant(租户id, () -> { return /*业务逻辑*/ });
@Component
public class BizTest {

    // 动态切换到指定的租户进行操作
    @DynamicTenant(value  = "#tenantId")
    public void test(String tenantId) {
        // 业务逻辑
    }
}

登录界面多租户支持

在登录时,系统会根据账号、手机号或邮箱唯一性来自动识别租户。

如果为租户设置了绑定的域名,登录时只能选择与当前域名关联的租户列表。

租户套餐管理

新增租户套餐

在新增租户前,先配置好对应的租户套餐,因为一旦租户创建,无法修改所选套餐。

租户创建完成后,可以同步套餐的变动至租户。

租户管理

默认租户

系统默认提供了一个租户,不能修改。

新增租户

新增租户时需要选择对应的套餐:

租户创建完成后,超级管理员可以登录并管理租户:

修改租户

租户创建后可以配置绑定的域名,域名绑定后只能用于特定租户登录:

同步套餐

当租户套餐更新后,可以同步套餐中的配置菜单到指定租户。管理员可以通过点击按钮实现同步。

切换租户(仅限超级管理员)

超级管理员可以在系统中切换租户,切换时不会改变当前用户身份,管理员依然具有所有权限,只是切换的数据所属租户不同。

   
分类:Java/OOP 作者:无限繁荣, 吴蓉 发表于:2024-09-09 01:20:27 阅读量:209
<<   >>


powered by kaifamiao