создание формы регистрации и входа в node.js и mongodb

#mongodb #node.js #express

#mongodb #node.js #экспресс

Вопрос:

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

Ответ №1:

Вы можете найти полный пример того, что вы пытаетесь сделать в приложении Nodepad от Alex Young. Два важных файла, на которые вам следует взглянуть, — это 2:

https://github.com/alexyoung/nodepad/blob/master/models.js
https://github.com/alexyoung/nodepad/blob/master/app.js

Часть модели выглядит следующим образом:

   User = new Schema({
    'email': { type: String, validate: [validatePresenceOf, 'an email is required'], index: { unique: true } },
    'hashed_password': String,
    'salt': String
  });

  User.virtual('id')
    .get(function() {
      return this._id.toHexString();
    });

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

Я думаю, что он также объясняет код на сайте dailyjs.

Комментарии:

1. Руководство Алекса было именно тем, что мне было нужно.

2. dailyjs.com/2010/12/06/node-tutorial-5 Вот страница для аутентификации.

Ответ №2:

Я написал шаблонный проект, чтобы сделать именно это.Он поддерживает создание учетной записи, поиск пароля по электронной почте, сеансы, локальные файлы cookie для запоминания пользователей при их возвращении и безопасное шифрование пароля с помощью bcyrpt.

В моем блоге также есть подробное объяснение архитектуры проекта.

Комментарии:

1. демо-версия хороша .. но код написан не очень дружелюбным способом :/

2. Я не согласен. Если только он не изменил ее с 13 июня 2012 года. Я думаю, что код хорошо структурирован, и я могу сразу сказать, что происходит. Стоит проверить.

3. Для меня это был отличный шаблон. Я определенно изменил ее (как и следовало), чтобы соответствовать моим потребностям. Я обсуждаю возможность интеграции этого подхода с passport. Я также переключусь на Mongoose для обработки MongoDB, просто еще не добрался туда. В любом случае, это хороший эталонный проект.

Ответ №3:

Для простого способа начать работу взгляните на ExpressJS MongooseJS MongooseAuth.

В частности, этот последний плагин предоставляет стандартный простой способ входа в систему с использованием нескольких различных методов аутентификации (пароль, Facebook, Twitter и т.д.)

Комментарии:

1. есть ли способ, которым я мог бы сохранить данные для входа в базу данных (mongodb), а позже получить данные и проверить, существует ли конкретный пользователь в базе данных, если да, то пользователю будет разрешено войти в систему и перенаправлен на другую страницу. иначе он не был бы.кто-нибудь может предоставить мне код для справки

2. @DarHamid Mongoose-auth автоматически сохраняет информацию о пользователе (полученную из пароля после регистрации facebook, Twitter и т.д.) В mongodb. Клонируйте ее и запустите пример. Смотрите Readme.md для получения дополнительной информации.

3. Стоит отметить, что 2 года спустя, к сожалению, MongooseAuth не поддерживается должным образом, и вместо этого использовать PassportJS..