Jeg har ikke (eller har ikke) fundet noget problem med din kode, men jeg har et forslag til at spore fejlen.
Denne kodeblok er risikabel. Du kan ved et uheld opdatere adgangskodefeltet og udløse rehash-adgangskoden.
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();
});
});
});
Indsæt en console.log
lige efter if (!user.isModified('password'))
for at tjekke for uventet adgangskodeopdatering. Prøv nu igen, glem adgangskoden og se, om der er nogen fejl derinde.
*TD;LR Adskil opdateringsadgangskoden til en ny metode i stedet for at sætte den i pre-gem, da du ved et uheld kan opdatere en ny adgangskode sammen med andre felter
*Opdatering:Tak #imns for at foreslå et bedre SALT_FACTOR-nummer.