私は mongoosejs ODM スキーマで定義されたカスタム メソッドを持っています。これにより、salt を生成し、指定されたパスワードをエンコードできます。
node.js 暗号化モジュールは非同期であるため、パスワード エンコーディングをソルト コールバックに入れる必要があります (そうしないと、生成に時間がかかるため、ソルトはまったくありません)。しかし、これは主な問題ではありません。主な問題は、mongoosejs オブジェクトのソルトとパスワードのプロパティを設定する必要があることです。通常、これは "this" で行いますが、"this" はコールバックでは機能しません (親オブジェクトではなくコールバックを参照します)。
では、非同期呼び出しからエンコードされたパスワードとソルトを取り戻すにはどうすればよいでしょうか?
methods: {
setPassword: function(password) {
crypto.randomBytes(32, function(err, buf) {
var salt = buf.toString('hex');
this.salt = salt;
crypto.pbkdf2(password, salt, 25000, 512, function(err, encodedPassword) {
if (err) throw err;
this.password = encodedPassword;
});
});
}
}
returnステートメントも使用してみましたが、何も返されません...