MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Passwort zurücksetzen in NodeJS

Ich habe (oder habe) kein Problem mit Ihrem Code gefunden, aber ich habe einen Vorschlag, um den Fehler zu verfolgen.

Dieser Codeblock ist riskant. Sie können versehentlich das Passwortfeld aktualisieren und den Prozess der Passwortwiederholung auslösen.

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

Fügen Sie eine console.log ein direkt nach dem if (!user.isModified('password')) um nach unerwarteten Passwortaktualisierungen zu suchen. Versuchen Sie es jetzt erneut, vergessen Sie das Passwort und sehen Sie nach, ob es einen Fehler gibt.

*TD;LR Trennen Sie das Update-Passwort in eine neue Methode, anstatt es in die Vorabspeicherung zu legen, da Sie versehentlich ein neues Passwort zusammen mit anderen Feldern aktualisieren können

*Aktualisierung:Danke #imns für den Vorschlag einer besseren SALT_FACTOR-Zahl.