【发布时间】: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