2017-10-08 119 views
0

我使用janusgraph和cassandra作爲存儲後端。在保存密碼之前,我使用名爲bcrypt的節點程序包來加密密碼。 janusgraph中該屬性的數據類型是String。這是得到了生成的密碼哈希字符串 - $2a$10$JSR6FClewTOHGxwpt/F0AePRzGnKvV2L9gj4TL1dA9fQERLWrig7ujanusgraph - 存儲使用bcrypt加密的密碼

這是在試圖將其保存在數據庫中,我得到的錯誤:

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

請讓我知道如果你需要任何其他信息。

回答

1

您傳遞給服務器的查詢會使用Groovy進行編譯,而Groovy正試圖將$作爲標識符進行解析。你的散列中有一個字面$,所以你需要在每個$前面加上一個\來逃避它。例如:

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

不是常規大師自己,但我意識到這一點的評價使用雙引號時才嘗試,所以我設法確保我使用單引號來解決這個問題。 我正在使用PHP,所以這個過程是首先json_encode然後交換雙引號單引號照顧中間任何已經轉義的引號(如果有的話)。