web-dev-qa-db-fra.com

création d'un formulaire d'inscription et de connexion dans node.js et mongodb

Je suis nouveau sur node.js et je veux créer une page d'enregistrement et de connexion pour l'utilisateur.Il doit également y avoir une autorisation appropriée pour l'utilisateur.Je veux stocker les informations sur l'utilisateur dans la base de données mongodb.Comment puis-je y parvenir.can quelqu'un peut-il me fournir le code pour le faire, afin que je puisse commencer avec node.js et mongodb.Please help

38
Dar Hamid

Vous pouvez trouver un échantillon complet de ce que vous essayez de faire dans le application Nodepad par Alex Young . Les 2 fichiers importants que vous devriez consulter sont les 2 suivants:

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

Une partie du modèle ressemble à ceci:

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

Je pense qu'il a également explique le code sur le site dailyjs .

42
alessioalex

J'ai écrit un projet passe-partout à faire exactement cela. Il prend en charge la création de compte, la récupération de mot de passe par e-mail, des sessions, des cookies locaux pour se souvenir des utilisateurs lorsqu'ils reviennent et un cryptage de mot de passe sécurisé via bcyrpt .

Il y a aussi une explication détaillée de l'architecture du projet sur mon blog.

21
braitsch

Pour un moyen facile de commencer, jetez un œil à ExpressJS + MongooseJS + MongooseAuth .

En particulier, ce dernier plug-in fournit un moyen simple et standard de se connecter en utilisant plusieurs méthodes d'authentification différentes (mot de passe, Facebook, Twitter, etc.)

10
Gates VP