2011-11-08 5 views
38

Je suis nouveau à Node.js et que vous souhaitez créer une page d'inscription et de connexion pour user.also il doit autorisation pour le user.I veulent stocker les informations utilisateur à l'intérieur de la base de données mongodb.Comment puis-je atteindre this.can quelqu'un me fournir le code pour le faire, de sorte que je peux commencer avec node.js et mongodb.S'il vous plaît aidercréation formulaire d'inscription et de connexion dans Node.js et MongoDB

+0

Qu'avez-vous essayé jusqu'à présent? – beny23

Répondre

42

Vous pouvez trouver, en particulier, un échantillon complet de ce que vous êtes essayer de faire dans le Nodepad application by Alex Young. Le 2 fichier important, vous devriez jeter un oeil à ces 2 sont:

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 explains the code on the dailyjs site.

+0

tutoriel d'Alex était exactement ce que je avais besoin. – mwilcox

+3

http://dailyjs.com/2010/12/06/node-tutorial-5/ Voici la page d'authentification. –

10

Pour un moyen facile de commencer à jeter un oeil à ExpressJS + MongooseJS + MongooseAuth.

que dernier plug-in fournit un moyen simple standard pour faire les connexions en utilisant plusieurs méthodes d'authentification (mot de passe, Facebook, Twitter, etc.)

+0

est-il un moyen que je peux stocker étaient les détails de connexion à l'intérieur de 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, alors l'utilisateur sera autorisé à se connecter et redirigé vers une autre page.else il ne be.can quelqu'un me fournir le code de référence –

+1

@DarHamid Mongoose-auth stocke automatiquement les informations d'utilisateur (tiré par les cheveux de mot de passe après l'inscription, facebook, twitter, etc.) dans un MongoDB. Clonez-le et exécutez l'exemple. Voir le Readme.md pour plus d'informations. – k00k

+1

A noter 2 ans plus tard que malheureusement MongooseAuth n'est pas bien entretenu et à utiliser à la place PassportJS .. – Petrogad

21

J'ai écrit un boilerplate project faire exactly this. Il prend en charge la création de compte, récupération du mot par e-mail, les sessions, les cookies locaux pour se rappeler les utilisateurs lors de leur retour et le cryptage par mot de passe sécurisé via bcyrpt.

There's also a detailed explanation of the project's architecture on my blog.

+0

la démo est bonne .. mais le code est écrit d'une manière pas très amicale:/ – tUrG0n

+3

Je ne suis pas d'accord. À moins qu'il ne l'ait changé depuis le 13 juin 2012. Je pense que le code est bien structuré et que je peux immédiatement dire ce qui se passe. Ça vaut le coup de vérifier. –

+0

Ce fut un grand passe-partout pour moi. Je l'ai définitivement modifié (comme vous le devriez) pour répondre à mes besoins. Je discute de l'intégration de cette approche avec le passeport. Je vais aussi passer à Mongoose pour gérer MongoDB, mais je n'y suis pas encore arrivé. En tout cas, c'est un bon projet de référence. – BRogers

Questions connexes