5

[Error: data and hash arguments required]ノード アプリ内でユーザーの既存のパスワードを確認しようとすると、エラーが発生します。コンテキストは、ユーザー プロファイル ページ内でパスワードを変更する前に、既存のパスワードを確認するようにユーザーに依頼することです。私のスタックは node + mondodb (mongoose 経由) で、passport-local と bcrypt を使用しています。

関連するコードは次のとおりです。

// code trying to match that returns the aforementioned error
req.user.comparePassword(req.body.password, function (err, isMatch) {
    if (err) {
        return console.error(err);
    }
    if (isMatch) {
        console.log('passwords match');
        // now save new password

        // Password verification
        userSchema.methods.comparePassword = function (candidatePassword, cb) {
            bcrypt.compare(candidatePassword, this.password, function (err, isMatch) {
                if (err) return cb(err);
                cb(null, isMatch);
            });
        };
    }
}

req.user現在のユーザー オブジェクトを参照し、「req.body.password」はユーザーの POST から取得したパスワードです。ここでは、passport-local の例の UserSchema、passport 戦略、および Bcrypt 構成を使用しています。

更新前にパスワードが一致することを確認する方法について、誰かがガイダンスを提供できますか?

4

1 に答える 1

6

引数の 1 つ、またはいずれかが欠落bcrypt.compareしていると不平を言うことも同様です。つまり、おそらくまたはが返されることを意味します。そのユーザーのデータベース レコードを確認し、有効なハッシュが格納されていることを確認してください。datahashthis.passwordnullundefined

于 2013-08-03T05:38:18.950 に答える