mysql DB から暗号ハッシュを保存、取得、比較するのに問題があります。
前述のように、ハッシュを生成するために「crypto」モジュールを使用しています(そのハッシュには特殊文字が含まれています)。
私のテーブルは「utf8_unicode_ci」照合を使用しています。これらの特殊文字のため、ハッシュを DB に保存するのに苦労しました。だから、私はこの方法を使用しようとしました:
exports.real_escape_string = function real_escape_string(str) {
return str.replace(/[\0\x08\x09\x1a\n\r"'\\\%]/g, function (char) {
switch (char) {
case "\0":
return "\\0";
case "\x08":
return "\\b";
case "\x09":
return "\\t";
case "\x1a":
return "\\z";
case "\n":
return "\\n";
case "\r":
return "\\r";
case "\"":
case "'":
case "\\":
case "%":
return "\\" + char; // prepends a backslash to backslash, percent,
// and double/single quotes
}
});
};
それは機能し、ハッシュをDBに保存することができましたが、何らかの理由でDBに保存するとハッシュ自体が変更されます。mysql データベースにアクセスしてアクションを実行するために、有名な mysql モジュールを使用しています。
var mysql = require('mysql');
他に何を試すことができますか?