38 votes

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

Je suis nouveau dans le monde de node.js et je veux créer une page d'enregistrement et de connexion pour l'utilisateur. Je veux stocker les informations de l'utilisateur dans la base de données mongodb. Comment puis-je réaliser cela ? Quelqu'un peut-il me fournir le code pour le faire, afin que je puisse démarrer avec node.js et mongodb ?

42voto

alessioalex Points 27001

Vous pouvez trouver un exemple complet de ce que vous essayez de faire dans la section Application Nodepad par Alex Young . Les deux fichiers importants que vous devez examiner sont les 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 aussi explique le code sur le site de dailyjs .

0 votes

Le tutoriel d'Alex était exactement ce dont j'avais besoin.

3 votes

dailyjs.com/2010/12/06/node-tutorial-5 Voici la page pour l'authentification.

21voto

braitsch Points 3353

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

Vous trouverez également une explication détaillée de l'architecture du projet sur mon blog.

0 votes

La démo est bonne mais le code est écrit d'une manière peu conviviale :/

3 votes

Je ne suis pas d'accord. A moins qu'il ne l'ait modifié depuis le 13 juin 2012. Je pense que le code est bien structuré et je peux immédiatement dire ce qui se passe. Cela vaut la peine de vérifier.

0 votes

C'était un excellent modèle pour moi. Je l'ai définitivement modifié (comme vous devriez le faire) pour l'adapter à mes besoins. J'envisage d'intégrer cette approche à passport. Je vais également passer à Mongoose pour gérer MongoDB, mais je n'en suis pas encore là. En tout cas, c'est un bon projet de référence.

10voto

Gates VP Points 26481

Pour commencer facilement, jetez un coup d'oeil à 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.).

0 votes

Il y a t-il un moyen de stocker les détails de connexion dans la base de données (mongodb) et plus tard récupérer les détails et vérifier si l'utilisateur particulier existe dans la base de données, si oui, l'utilisateur sera autorisé à se connecter et redirigé vers une autre page, sinon il ne le sera pas.

1 votes

@DarHamid Mongoose-auth stocke automatiquement les informations de l'utilisateur (récupérées à partir du mot de passe après enregistrement, facebook, twitter, etc) dans un mongodb. Clonez-le et exécutez l'exemple. Voir le Readme.md pour plus d'informations.

1 votes

A noter 2 ans plus tard que malheureusement MongooseAuth n'est pas bien maintenu et qu'il faut utiliser PassportJS à la place

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X