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

Nulstilling af adgangskode i NodeJS

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.



  1. Forbinder Django +1.10 med MongoDB

  2. Opdaterer indlejret objekt i mongoose

  3. MongoDB-tilgange til lagring af store mængder metrics/analysedata

  4. Hvordan gemmer man en række input til et underordnet skema i et indlejret mongoose-skema?