MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Redefinição de senha no NodeJS


Não encontrei (ou não encontrei) nenhum problema com seu código, mas tenho uma sugestão para rastrear o bug.

Este bloco de código é arriscado. Você pode atualizar acidentalmente o campo de senha e acionar o processo de rehash de senha.
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();
      });
   });
});

Coloque um console.log logo após o if (!user.isModified('password')) para verificar se há atualização inesperada de senha. Agora tente novamente esquecer a senha e veja se há algum bug lá.

*TD;LR Separe a senha de atualização em um novo método em vez de colocá-la no pré-salvar, pois você pode atualizar acidentalmente uma nova senha junto com outros campos

*Atualização:obrigado #imns por sugerir um número SALT_FACTOR melhor.