janusgraph — хранить пароль в зашифрованном виде с помощью bcrypt

Я использую janusgraph с cassandra в качестве хранилища. Я использую пакет node под названием bcrypt для шифрования пароля перед его сохранением. Тип данных для этого свойства в janusgraph — String. Это сгенерированная строка хэша пароля - $2a$10$JSR6FClewTOHGxwpt/F0AePRzGnKvV2L9gj4TL1dA9fQERLWrig7u

Это ошибка, которую я получаю при попытке сохранить ее в БД:

"message": "startup failed:\nScript88.groovy: 1: illegal string body character after dollar sign;\n   solution: either escape a literal dollar sign \"\\$5\" or bracket the value expression \"${5}\" @ line 1, column 228.\n   elf_reg_ind\",\"2\",\"self_reg_pw\",\"$2a$10$J\n                                 ^\n\n1 error\n",
  "Exception-Class": "org.codehaus.groovy.control.MultipleCompilationErrorsException"

Пожалуйста, дайте мне знать, если вам нужна какая-либо другая информация.


person Vipul Sharma    schedule 08.10.2017    source источник


Ответы (2)


Запрос, который вы передаете серверу, компилируется с помощью Groovy, и Groovy пытается разрешить $ как идентификатор. В вашем хэше есть буквальное $, поэтому вам нужно поставить \ перед каждым $, чтобы избежать его. Например:

{ "gremlin":
    "g.V(1234).property('hash', '\$2a\$10\$JSR6FClewTOHGxwpt/F0AePRzGnKvV2L9gj4TL1dA9fQERLWrig7u')"
}
person Jason Plurad    schedule 08.10.2017

Сам я не отличный гуру, но я понял, что эта оценка выполняется только при использовании двойных кавычек, поэтому мне удалось решить эту проблему, убедившись, что я использую одинарные кавычки. Я использую PHP, поэтому процесс заключается в том, чтобы сначала json_encode заменить двойные кавычки на одинарные, заботясь о любых уже экранированных кавычках (если они есть) между ними.

person Don Omondi    schedule 11.11.2017