如何在gremlin中区分选择和添加/更新查询?

时间:2019-06-19 10:53:51

标签: gremlin gremlin-server

我有一个应用程序,允许用户从UI推送Gremlin查询,并且这些查询在后端gremlin服务器上执行。

我只允许选择查询。也就是说,不允许使用任何会更新/修改现有图形的查询,而所有不更改图形就返回某些内容的查询都是可以的。

赞:

g.V().label()          //allowed
g.V(1).properties()    //allowed

g.V(1).property('name', 'new name')   // not allowed

我应该如何确定允许哪些查询?

1 个答案:

答案 0 :(得分:1)

防止服务器端发生突变的一种简单方法是在Gremlin Server中用ReadOnlyStrategy配置“ g”。可以在conf/gremlin-server-modern-readonly.yaml的默认Gremlin Server发行版中找到此方法的示例。感兴趣的行是here,它使用scripts/generate-modern-readonly.groovyhere)的初始化脚本-其重点是:

def globals = [:]

... 

globals << [g : graph.traversal().withStrategies(ReadOnlyStrategy.instance(), ReferenceElementStrategy.instance())]