создание формы регистрации и авторизации в node.js и mongodb - PullRequest
38 голосов
/ 08 ноября 2011

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

Ответы [ 3 ]

42 голосов
/ 13 ноября 2011

Вы можете найти полный пример того, что вы пытаетесь сделать, в приложении Nodepad от Alex Young .Два важных файла, на которые вы должны взглянуть, это 2:https://github.com/alexyoung/nodepad/blob/master/models.jshttps://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 .

21 голосов
/ 13 июня 2012

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

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

10 голосов
/ 09 ноября 2011

Чтобы легко начать, взгляните на ExpressJS + MongooseJS + MongooseAuth .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...