我有一个应用程序,允许用户从UI推送Gremlin查询,并且这些查询在后端gremlin服务器上执行。
我只允许选择查询。也就是说,不允许使用任何会更新/修改现有图形的查询,而所有不更改图形就返回某些内容的查询都是可以的。
赞:
g.V().label() //allowed
g.V(1).properties() //allowed
g.V(1).property('name', 'new name') // not allowed
我应该如何确定允许哪些查询?
答案 0 :(得分:1)
防止服务器端发生突变的一种简单方法是在Gremlin Server中用ReadOnlyStrategy
配置“ g”。可以在conf/gremlin-server-modern-readonly.yaml
的默认Gremlin Server发行版中找到此方法的示例。感兴趣的行是here,它使用scripts/generate-modern-readonly.groovy
(here)的初始化脚本-其重点是:
def globals = [:]
...
globals << [g : graph.traversal().withStrategies(ReadOnlyStrategy.instance(), ReferenceElementStrategy.instance())]