mybatis 多租户saas_基于业务中台的多租户权限管理设计方案

文章是基于业务中台多租户权限管理设计的整体方案,笔者梳理了后台系统权限管理设计的一般方法、需要解决的问题以及总结了具体的设计方案。

391830f38aab20ffff201a1a7c4be307.png

一、后台系统中权限管理设计的一般方法

在设计后台系统(如:CRM、EPR、EHR、电商管理后台等)时,权限管理是必不可少的功能,绝大部分的后台系统都是处理企业业务流程的,会涉及到多个部门的协同合作,必然需要对每个能够使用系统的用户进行权限管理。

在一般的单体应用的后台中权限管理的大体模式如下:

b3c237502d442f1f9f5b019285b27ca2.png

整体的业务逻辑如下:

  1. 系统中的菜单、页面、按钮、字段以及运行时产生的数据都需要注册成为系统资源;
  2. 系统资源打包组合成为角色;
  3. 角色可以关联用户,也就完成了资源授权给用户的处理
  4. 角色可以关联用户组,而用户组是多个用户组合而成的一个集合,用户能够继承用户组关联的角色

而在系统运行时,任何一个用户在使用系统资源时,都需要进行授权校验,也就是看这个用户关联的所有的角色囊括的资源是否包涵当前要访问的资源,如此就完成了

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mybatis多租户是指在一个系统,将数据按照租户进行隔离,每个租户只能访问自己的数据,实现多租户的数据管理。Mybatis-Plus提供了一个多租户插件TenantLineInnerInterceptor,可以方便地实现多租户功能。 使用Mybatis-Plus的多租户插件,可以在SQL执行前自动添加租户条件,从而实现数据的隔离。插件会根据当前登录用户或者其他标识,自动将租户字段添加到SQL的WHERE条件,确保每个租户只能访问自己的数据。 下面是一个使用Mybatis-Plus多租户插件的示例代码: ```java // 配置多租户插件 @Configuration public class MybatisPlusConfig { @Bean public TenantLineInnerInterceptor tenantLineInnerInterceptor() { TenantLineInnerInterceptor tenantLineInnerInterceptor = new TenantLineInnerInterceptor(); // 设置租户字段名 tenantLineInnerInterceptor.setTenantLineFieldName("tenant_id"); // 设置租户ID获取器,用于获取当前租户ID tenantLineInnerInterceptor.setTenantIdGetter(new TenantIdGetter() { @Override public Expression getTenantId() { // 根据实际情况获取当前租户ID Long tenantId = getCurrentTenantId(); return new LongValue(tenantId); } }); return tenantLineInnerInterceptor; } @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(tenantLineInnerInterceptor()); return interceptor; } } ``` 在上述代码,我们配置了一个TenantLineInnerInterceptor,并设置了租户字段名和租户ID获取器。然后将该拦截器添加到Mybatis-Plus的拦截器链。 通过以上配置,当执行SQL时,插件会自动根据当前租户ID添加租户条件,确保每个租户只能访问自己的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值