sql >> Databáze >  >> NoSQL >> MongoDB

Obnovení hesla v NodeJS

Nenašel jsem (nebo nenašel) žádný problém s vaším kódem, ale mám návrh, jak chybu vysledovat.

Tento blok kódu je riskantní. Můžete náhodně aktualizovat pole pro heslo a spustit proces přepracování hesla.

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

Vložte console.log hned za if (!user.isModified('password')) zkontrolovat neočekávanou aktualizaci hesla. Nyní zkuste znovu zapomenout heslo a zjistěte, zda tam není nějaká chyba.

*TD;LR Oddělte heslo pro aktualizaci na novou metodu místo toho, abyste ho vložili do předběžného uložení, protože můžete omylem aktualizovat nové heslo spolu s dalšími poli

*Aktualizace:Děkujeme #imns za navržení lepšího čísla SALT_FACTOR.



  1. Jak přesunout položku v poli MongoDB?

  2. Hlavní rysy MapReduce – Význam MapReduce

  3. Existuje jednoduchý způsob, jak exportovat data z meteorologické aplikace?

  4. mongoose node.js, dotaz s $lt a $gt nefunguje