ABP 啓用多租戶實現數據隔離

  多租戶技術(英語:multi-tenancy technology)或稱多重租賃技術,是一種軟件架構技術,它是在探討與實現如何於多用戶的環境下共用相同的系統或程序組件,並且仍可確保各用戶間數據的隔離性。

  多租戶簡單來說是指一個單獨的實例可以爲多個組織服務。多租戶技術爲共用的數據中心內如何以單一系統架構與服務提供多數客戶端相同甚至可定製化的服務,並且仍然可以保障客戶的數據隔離。一個支持多租戶技術的系統需要在設計上對它的數據和配置進行虛擬分區,從而使系統的每個租戶或稱組織都能夠使用一個單獨的系統實例,並且每個租戶都可以根據自己的需求對租用的系統實例進行個性化配置。

  多租戶技術可以實現多個租戶之間共享系統實例,同時又可以實現租戶的系統實例的個性化定製。通過使用多租戶技術可以保證系統共性的部分被共享,個性的部分被單獨隔離。通過在多個租戶之間的資源複用,運營管理維護資源,有效節省開發應用的成本。而且,在租戶之間共享應用程序的單個實例,可以實現當應用程序升級時,所有租戶可以同時升級。同時,因爲多個租戶共享一份系統的核心代碼,因此當系統升級時,只需要升級相同的核心代碼即可。

這段是來自百度百科對於多租戶技術的名詞解釋,下面是在 ABP 框架裝實踐啓用多租戶的主要步驟:

1.確認當前已禁用多租戶設置

Configuration.MultiTenancy.IsEnabled = false;

2.初始化租戶與租戶管理員(啓動時 seed 裏面初始化)

3.完成一次登錄

4.啓用多租戶

Configuration.MultiTenancy.IsEnabled = true;

5.查詢共享數據時禁用租戶過濾即可,禁用語法:

UnitOfWorkManager.Current.DisableFilter(AbpDataFilters.SoftDelete);

未禁用可能遇到:Navigation property 'Tokens' on entity of type 'User' cannot be loaded because the entity is not being tracked.

6.解決重啓服務後需要重新登錄,原因是啓用多租戶後沒有記錄到 TenantId 導致的,下面是解決方案

  • 登錄時記錄 TenantId 到 Claim;
  • 在 PlatformJwtSecurityTokenHandler 類中手動指定 SetTenantId;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章