2

我將在Spring OAuth 2 + Spring Data Neo4j項目中實現多租戶支持。Spring OAuth 2 + Spring Data Neo4j多租戶

我已配置我的OAuth2授權服務器與幾個不同的客戶與不同的clientId

另外,我還增加了一個基地TenantEntity我的春天數據Neo4j的車型:

@NodeEntity 
public abstract class TenantEntity extends BaseEntity { 

    private String tenantId; 

    public String getTenantId() { 
     return tenantId; 
    } 

    public void setTenantId(String tenantId) { 
     this.tenantId = tenantId; 
    } 

} 

我所有的現有數據春實體的Neo4j現在必須擴大這種TenantEntity

現在我要重寫我所有的Neo4j查詢以支持tenantId參數。

例如當前查詢:

MATCH (d:Decision)<-[:DEFINED_BY]-(c:Criterion) WHERE id(d) = {decisionId} AND NOT (c)<-[:CONTAINS]-(:CriterionGroup) RETURN c

我要重寫如下:

MATCH (d:Decision)<-[:DEFINED_BY]-(c:Criterion) WHERE id(d) = {decisionId} AND d.tenantId = {tenantId} AND c.tenantId = {tenantId} AND NOT (c)<-[:CONTAINS]-(:CriterionGroup) RETURN c 

反過來對tenantId我要使用的OAuth2 clientId,並與每一起存儲Neo4j實體。

這是一個正確的方法,以實現多租戶或Spring OAuth2/Data Neo4j可以提出一些更加標準的開箱即用的功能嗎?

回答

1

由於Neo4j目前沒有支持多租戶的功能,如果您特別需要此功能,則必須像您所做的那樣解決問題。你的解決方案看起來合理

或者,許可是通過機器進行的,因此可以使用Docker,並在不同的端口上分別啓動多個Neo4j實例。