Spring OAuth 2 + Spring 数据 Neo4j 多租户

Spring OAuth 2 + Spring Data Neo4j multi-tenancy

我将在我的 Spring OAuth 2 + Spring Data Neo4j 项目中实现多租户支持。

我已经为我的 OAuth2 授权服务器配置了几个具有不同 clientId 的不同客户端。

另外,我在我的 Spring Data Neo4j 模型中添加了一个基础 TenantEntity

@NodeEntity
public abstract class TenantEntity extends BaseEntity {

    private String tenantId;

    public String getTenantId() {
        return tenantId;
    }

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

}

我所有现有的 Spring Data 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 可以提出一些开箱即用的标准?

由于Neo4j目前还没有支持多租户的特性,如果你特别需要,必须按照你的方法解决。您的解决方案看起来很合理。

或者,许可是按机器进行的,因此可以使用,例如,Docker 并启动多个 Neo4j 实例,每个实例都在不同的端口上。