2017-10-08 3 views
0

J'utilise janusgraph avec cassandra comme backend de stockage. J'utilise un paquet de noeuds appelé bcrypt pour crypter un mot de passe avant de l'enregistrer. Le type de données pour cette propriété dans janusgraph est String. Ceci est la chaîne de hachage de mot de passe qui a obtenu généré - $2a$10$JSR6FClewTOHGxwpt/F0AePRzGnKvV2L9gj4TL1dA9fQERLWrig7ujanusgraph - stocker un mot de passe crypté en utilisant bcrypt

C'est l'erreur que je reçois en essayant de le sauver dans la db:

"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" 

S'il vous plaît laissez-moi savoir si vous avez besoin d'autres informations.

Répondre

1

La requête que vous transmettez au serveur est compilée avec Groovy et Groovy tente de résoudre le $ en tant qu'identificateur. Vous avez un littéral $ dans votre hachage, donc vous devez mettre un \ devant chaque $ pour y échapper. Par exemple:

{ "gremlin": 
    "g.V(1234).property('hash', '\$2a\$10\$JSR6FClewTOHGxwpt/F0AePRzGnKvV2L9gj4TL1dA9fQERLWrig7u')" 
} 
0

Pas un gourou groovy moi-même, mais j'ai réalisé cette évaluation est réalisée uniquement lors de l'utilisation des guillemets doubles donc je réussi à résoudre ce problème en veillant à ce que j'utilise des guillemets simples. J'utilise PHP donc le processus est d'abord json_encode puis l'échange de guillemets doubles pour des guillemets simples en prenant soin de toutes les citations déjà échappées (le cas échéant) entre les deux.