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实例。