多租户中的监管租户问题

Blade 未结 1 544
med
med 剑圣 2021-08-20 10:11

一、该问题的重现步骤是什么?

1. 首先我们现在有这样一个需求:目前有4个租户,A、B、C、D;A为B、C、D的监管租户,可以看到BCD租户的数据,并且可以有BCD租户数据的增删改查权限;A租户可以查看BCD租户的全部数据,也可以切换单独的B、C、D的数据进行查看

2. 

3.


二、你期待的结果是什么?实际看到的又是什么?

请大佬给出实现思路,以及需要修改的代码截图

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

商业授权版2.8.2;windows

四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

1条回答
  • 2021-08-20 14:24

     1. 你这个需求适合用部门来做,顶级部门有下级部门的所有查看权限和操作权限。

     2. 而用租户来做是不合适的,因为多租户讲的就是数据完全隔离,又何来看不同租户数据一说,如果能看,那他就不叫租户系统了。放到现实生活中来看这个概念,别说租户随意串门,就算是房东也没权利去自己家租户的房间。所以你们这个需求是不合适的。

     3. 如果一定要做,那么给你一点思路,在租户拦截器底层这么判断:

     1) 如果请求的是A监管,那么筛选的时候最后的sql语句就变成 where tenant_id = b or tenant_id = c or tenant_id = d。你这么看是不是觉得很奇怪。

     2) 再往大了想,如果不是字段隔离而是数据库隔离,你A监管要看bcd怎么办。数据实时做汇总?把不同数据库的数据实时合并到一起,再给你分页、新增等等操作么?如果数据量千万级别该怎么合并呢?这显然是非常困难的。


    1 讨论(0)
提交回复