MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Đặt lại mật khẩu trong NodeJS

Tôi không (hoặc chưa) tìm thấy bất kỳ vấn đề nào với mã của bạn, nhưng tôi có một đề xuất để theo dõi lỗi.

Khối mã này có nhiều rủi ro. Bạn có thể vô tình cập nhật trường mật khẩu và kích hoạt quá trình chia sẻ lại mật khẩu.

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

Đặt console.log ngay sau if (!user.isModified('password')) để kiểm tra cập nhật mật khẩu đột xuất. Bây giờ hãy thử lại quên mật khẩu và xem có lỗi nào trong đó không.

* TD; LR Tách mật khẩu cập nhật thành một phương thức mới thay vì đặt nó vào bản lưu trước vì bạn có thể vô tình cập nhật mật khẩu mới cùng với các trường khác

* Cập nhật:Cảm ơn #imns để đề xuất số SALT_FACTOR tốt hơn.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Meteor:Tracker.autorun / important Các thay đổi và bộ sưu tập không hoạt động như mong đợi

  2. Làm cách nào để có được trạng thái kết nối trong trình điều khiển C # MongoDB v2.0?

  3. sao băng $ pull xóa khỏi mảng

  4. Cách unhideIndex () hoạt động trong MongoDB

  5. Mongo Chèn hàng loạt trên nhiều bộ sưu tập