Jeecg Boot 多租戶代碼實現(xiàn)邏輯

一直也沒用過Jeecg Boot的多租戶,沒敢用,最近恰好扒到了相關(guān)的代碼,就捋一下邏輯,為以后使用及調(diào)試做準(zhǔn)備。

以下根據(jù)代碼分析Jeecg Boot多租戶的實現(xiàn)邏輯

1.用戶登錄

用戶登錄后,后端會查出登錄用戶的租戶ID(可多個),整理為租戶ID集合與用戶信息一同返回給前端


image.png

2.前端收到返回信息

前端收到返回信息,取出租戶ID集合,
如果有多個租戶ID讓用戶手動選擇一個當(dāng)前租戶,
如果沒有租戶ID則默認(rèn)值0,
使用"saveTenant"方法將租戶ID設(shè)置到header上,之后發(fā)送請求時header都會帶租戶ID


image.png

3.后端接收請求時

后端接收請求時會用JwtFilter攔截請求,在preHandle()方法中取出請求header中的租戶ID,并設(shè)置到TenantContext對象中


image.png

4.jeecg使用mybatis plus的多租戶插件實現(xiàn)多租戶數(shù)據(jù)隔離

在MybatisPlusSaasConfig配置類里設(shè)置了TenantLineInnerInterceptor攔截器,里面會根據(jù)配置判斷哪些數(shù)據(jù)表需要走租戶過濾,如果需要走租戶過濾,mybatis plus 會在執(zhí)行sql前拼接租戶ID=租戶ID的過濾條件,會從TenantContext中取出當(dāng)前用戶的租戶ID。
TenantLineInnerInterceptor攔截器除了在查詢時會自動過濾租戶ID實現(xiàn)數(shù)據(jù)隔離外,插入數(shù)據(jù)時也會自動設(shè)置租戶ID,這塊沒測試但應(yīng)該是這樣


image.png

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容