Нет API-вызова, который вы можете сделать, чтобы определить это, но вы можете получить вдохновение для того, чтобы обнаружить его с ReadOnlyStrategy
здесь . Ключ заключается в циклическом переключении объекта Traversal
и поиске Step
, который реализует интерфейс Mutating
. Если вы найдете один из них, вы можете классифицировать обход как запрос на запись.
Конечно, для Gremlin классификация запроса и чтение или запись не настолько двоичны, как это может быть сочетание чтения и записи. Также возможно, что во время выполнения запись может никогда не выполняться в зависимости от потока обхода, поэтому она может быть «только для чтения во время выполнения». Надеюсь, обнаружение интерфейса Mutating
является достаточно хорошим решением для вас.
Я не уверен, где вы намереваетесь реализовать эту функцию авторизации, но я чувствую, что лучше всего это сделать как TraversalStrategy
, который затем будет стрелять в обход выполнения. Я не знаю, слишком ли поздно для вашего процесса авторизации, но это будет самый простой способ, который я могу себе представить. Проблема в том, что если вы принимаете сценарии, то при таком подходе вы можете получить частичное выполнение этого сценария до того момента, когда авторизация не будет разрешена. Если вам нужно запретить весь сценарий на основе одного обхода записи, вам может понадобиться пользовательская песочница . Конечно, лучше вообще избегать скриптов и просто использовать только запросы на основе байт-кода. Если вас интересует только байт-код, тогда TraversalStrategy
должно работать очень хорошо для случая использования авторизации.