2015-04-01 116 views
0

我設計了我的數據庫以支持多租戶:每個文檔都有一個對Tenant的引用。Spring Data MongoDB:如何在CrudRepository中實現多租戶

我使用Spring Data MongoDB來實現數據訪問邏輯,我需要處理我的存儲庫中的租戶的文檔檢索。

是否有共同的方法來實現它?我是否需要覆蓋CrudRepository的每種方法以僅匹配某個租戶的文檔,或者是否有一些設施可以實現此目的?

+0

也許這是interessting爲你:https://github.com/Loki-Afro/multi-tenant-spring-mongodb – user3415653 2015-04-01 14:20:48

+0

@ user3415653這是爲多個數據庫應用程序,我有一個共享DB爲所有租戶 – davioooh 2015-04-01 14:42:41

+0

實現一個服務層,在檢索方法中獲取當前用戶,並查詢所有符合條件的對象+租戶字段中的用戶標識。爲了增加安全性,你可以實現Spring Security [@PostFilter規則](http://docs.spring.io/spring-security/site/docs/current/reference/html/el-access.html#filtering-using- prefilter-and-postfilter)檢查租戶字段是否與當前用戶的Id匹配。 – 2015-04-01 16:23:08

回答

0

我終於決定在服務層實施多租戶,建議使用Markus W Mahlberg在他的評論中。

在存儲庫級別,我創建了一個findByTenantIdAndId查詢以檢查某個實體/文檔id是否屬於適當的租戶。

我有一個自定義實現UserDetails接口,爲登錄用戶存儲tenantId。我通過SecurityContextHolder在服務層檢索記錄的用戶。