как проверить, существуют ли имя пользователя и пароль внутри базы данных (mongodb)

#mongodb #node.js #express #mongoose

#mongodb #node.js #экспресс #мангуст

Вопрос:

я хочу сохранить имя пользователя и пароль внутри базы данных mongodb, а позже получить значения базы данных и проверить, существуют ли имя пользователя и пароль внутри базы данных.Если это действительно существует, я бы перенаправил на другую страницу.Как я могу добиться этого с помощью node.js и mongodb.Я могу хранить значения внутри базы данных.Но запутался в том, как извлекать значения и сверять их со значениями, указанными в значениях полей формы.В mongodb нет метода, подобного fetchByName или чему-то подобному. Может кто-нибудь помочь мне с кодом.

Ответ №1:

Я думаю, вам следует взглянуть на исходный код Nodepad, там очень хорошо объясняется, как добиться этого с помощью Mongoose:

   User.virtual('password')
    .set(function(password) {
      this._password = password;
      this.salt = this.makeSalt();
      this.hashed_password = this.encryptPassword(password);
    })
    .get(function() { return this._password; });

  User.method('authenticate', function(plainText) {
    return this.encryptPassword(plainText) === this.hashed_password;
  });

  User.method('makeSalt', function() {
    return Math.round((new Date().valueOf() * Math.random()))   '';
  });

  User.method('encryptPassword', function(password) {
    return crypto.createHmac('sha1', this.salt).update(password).digest('hex');
  });

  User.pre('save', function(next) {
    if (!validatePresenceOf(this.password)) {
      next(new Error('Invalid password'));
    } else {
      next();
    }
  });
  

Ответ №2:

попробуйте использовать уже существующую библиотеку, такую как passport или everyauth. Есть и другие, погуглите их 🙂