Как отличить выбор и добавить / обновить запрос в gremlin? - PullRequest
0 голосов
/ 19 июня 2019

У меня есть приложение, которое позволяет пользователю отправлять запросы Gremlin из пользовательского интерфейса, и эти запросы выполняются на внутреннем сервере gremlin.

Я хочу разрешить только выборочные запросы.т.е. любой запрос, который будет обновлять / модифицировать существующий график, не должен быть разрешен, в то время как все запросы, которые возвращают что-то без изменения графика, хороши.

Как:

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

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

Как я долженопределить, какие запросы разрешены, а какие нет?

1 Ответ

1 голос
/ 19 июня 2019

Простой способ защиты от мутаций на стороне сервера - настроить «g» в Gremlin Server с помощью ReadOnlyStrategy. Пример такого подхода можно найти в дистрибутиве Gremlin Server по умолчанию в conf/gremlin-server-modern-readonly.yaml. Интересующая линия здесь , которая использует сценарий инициализации scripts/generate-modern-readonly.groovy ( здесь ) - суть этого:

def globals = [:]

... 

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