【问题标题】:Spring OAuth 2 + Spring Data Neo4j multi-tenancySpring OAuth 2 + Spring Data Neo4j 多租户
【发布时间】:2017-03-05 22:53:36
【问题描述】:

我将在我的 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 可以为此目的提出更标准的开箱即用的方法?

【问题讨论】:

    标签: spring spring-security multi-tenant oauth2 spring-data-neo4j-4


    【解决方案1】:

    由于 Neo4j 目前没有支持多租户的功能,如果你特别需要这个,必须像你所做的那样解决它。您的解决方案看起来很合理。

    另外,许可是通过机器进行的,因此可以使用例如 Docker 并在不同的端口上启动多个 Neo4j 实例。

    【讨论】:

      猜你喜欢
      • 2015-01-10
      • 1970-01-01
      • 2018-09-29
      • 2022-11-18
      • 1970-01-01
      • 2014-04-19
      • 2019-01-03
      • 1970-01-01
      相关资源
      最近更新 更多