MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Reimpostazione della password in NodeJS

Non ho (o non ho) riscontrato alcun problema con il tuo codice, ma ho un suggerimento per rintracciare il bug.

Questo blocco di codice è rischioso. Potresti aggiornare accidentalmente il campo della password e attivare il processo di rehash della password.

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();
      });
   });
});

Inserisci un console.log subito dopo il if (!user.isModified('password')) per verificare la presenza di aggiornamenti imprevisti della password. Ora riprova, dimentica la password e controlla se c'è qualche bug.

*TD;LR Separa la password di aggiornamento in un nuovo metodo invece di inserirla nel pre-salvataggio poiché potresti aggiornare accidentalmente una nuova password insieme ad altri campi

*Aggiornamento:grazie #imns per suggerire un numero SALT_FACTOR migliore.