मुझे आपके कोड में कोई समस्या नहीं मिली (या नहीं मिली), लेकिन मेरे पास बग का पता लगाने का एक सुझाव है।
कोड का यह ब्लॉक जोखिम भरा है। आप गलती से पासवर्ड फ़ील्ड को अपडेट कर सकते हैं और पासवर्ड रीहैश प्रक्रिया को ट्रिगर कर सकते हैं।
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 नंबर सुझाने के लिए।