Neo4j:ACL - 主体之间的距离

时间:2013-08-06 07:48:25

标签: neo4j spring-data-neo4j

图表数据库的新手,并尝试使用Neo4j博客中的示例在Java中创建ACL:

Access control lists the graph database way

问题在于提供了ruby代码:

#Here's our function to check the distance between principals (and to see if they're on the same path at all).
def depth_of_principal( principal, reference_principal )
  result = reference_principal.outgoing( :IS_MEMBER_OF_GROUP ).depth( :all ).path_to( principal )
  return result.nil? ? nil : result.size
end

我应该在java中使用最短路径算法,还是我错了?将此移植到java的正确方法是什么?

        PathFinder<Path> finder = GraphAlgoFactory.shortestPath(Traversal.expanderForTypes(RelTypes.IS_MEMBER_OF_GROUP, Direction.OUTGOING), maxDepth);
        Path path = finder.findSinglePath(principal, referencePrincipal);

一件不合适的事情是maxDepth,但由于我的路径不会超过15,我想它应该没问题?

1 个答案:

答案 0 :(得分:0)

当然,使用最短路径(因为你确实在寻找这两个主体之间的最短路径)是合适的。而且你可以在这里看到最大深度作为安全网,这样你的遍历不会发疯。