コードに問題は見つかりませんでした(または見つかりませんでした)が、バグを追跡するための提案があります。
このコードブロックは危険です。誤ってパスワードフィールドを更新し、パスワードの再ハッシュプロセスをトリガーする可能性があります。
UserSchema.pre('save', function(next) {
var user = this;
var SALT_FACTOR = 12; // 12 or more for better security
if (!user.isModified('password')) return next();
console.log(user.password) // Check accident password update
bcrypt.genSalt(SALT_FACTOR, function(err, salt) {
if (err) return next(err);
bcrypt.hash(user.password, salt, null, function(err, hash) {
if (err) return next(err);
user.password = hash;
next();
});
});
});
console.log
を配置します if (!user.isModified('password'))
の直後 予期しないパスワードの更新をチェックします。ここで、パスワードを忘れて再試行し、そこにバグがないか確認してください。
* TD; LR他のフィールドと一緒に新しいパスワードを誤って更新する可能性があるため、更新パスワードを事前保存に入れるのではなく、新しい方法に分けてください
*更新:#imns に感謝します より良いSALT_FACTOR番号を提案してくれました。