sql >> Databasteknik >  >> NoSQL >> MongoDB

Lösenordsåterställning i NodeJS

Jag hittade inte (eller har inte) hittat några problem med din kod, men jag har ett förslag för att spåra felet.

Detta kodblock är riskabelt. Du kan av misstag uppdatera lösenordsfältet och utlösa processen för återhämtning av lösenord.

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

Lägg till en console.log direkt efter if (!user.isModified('password')) för att leta efter oväntad lösenordsuppdatering. Försök nu igen glöm lösenordet och se om det finns någon bugg där.

*TD;LR Separera uppdateringslösenordet till en ny metod istället för att lägga det i förspara eftersom du av misstag kan uppdatera ett nytt lösenord tillsammans med andra fält

*Uppdatering:Tack #imns för att föreslå ett bättre SALT_FACTOR-nummer.



  1. Hur jämförs Morphia-, Mongo4j- och Spring-data för MongoDB?

  2. Autentiseringsmekanismen SCRAM-SHA-1 stöds inte

  3. mongodb aggregerar för att få längden på den första kapslade arrayen/listan

  4. Mongoose expanderar standardvalidering