Jeecg Boot 多租户代码实现逻辑

一直也没用过Jeecg Boot的多租户,没敢用,最近恰好扒到了相关的代码,就捋一下逻辑,为以后使用及调试做准备。

以下根据代码分析Jeecg Boot多租户的实现逻辑

1.用户登录

用户登录后,后端会查出登录用户的租户ID(可多个),整理为租户ID集合与用户信息一同返回给前端


image.png

2.前端收到返回信息

前端收到返回信息,取出租户ID集合,
如果有多个租户ID让用户手动选择一个当前租户,
如果没有租户ID则默认值0,
使用"saveTenant"方法将租户ID设置到header上,之后发送请求时header都会带租户ID


image.png

3.后端接收请求时

后端接收请求时会用JwtFilter拦截请求,在preHandle()方法中取出请求header中的租户ID,并设置到TenantContext对象中


image.png

4.jeecg使用mybatis plus的多租户插件实现多租户数据隔离

在MybatisPlusSaasConfig配置类里设置了TenantLineInnerInterceptor拦截器,里面会根据配置判断哪些数据表需要走租户过滤,如果需要走租户过滤,mybatis plus 会在执行sql前拼接租户ID=租户ID的过滤条件,会从TenantContext中取出当前用户的租户ID。
TenantLineInnerInterceptor拦截器除了在查询时会自动过滤租户ID实现数据隔离外,插入数据时也会自动设置租户ID,这块没测试但应该是这样


image.png

image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容