sql >> Base de Datos >  >> NoSQL >> MongoDB

Restablecimiento de contraseña en NodeJS

No encontré (o no encontré) ningún problema con su código, pero tengo una sugerencia para rastrear el error.

Este bloque de código es arriesgado. Puede actualizar accidentalmente el campo de la contraseña y desencadenar el proceso de repetición de la contraseña.

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

Ponga un console.log justo después del if (!user.isModified('password')) para comprobar si hay una actualización de contraseña inesperada. Ahora vuelva a intentar olvidar la contraseña y ver si hay algún error allí.

*TD;LR Separe la contraseña de actualización en un nuevo método en lugar de ponerla en el guardado previo, ya que puede actualizar accidentalmente una nueva contraseña junto con otros campos

*Actualización:Gracias #imns por sugerir un mejor número SALT_FACTOR.