2011-11-08 29 views
38

node.js için yeniyim ve kullanıcı için bir kayıt ve giriş sayfası oluşturmak istiyorum.Ayrıca kullanıcı için uygun yetkilendirme var. Kullanıcı bilgilerini saklamak istiyorum mongodb veritabanı içinde.Nasıl yapabilirim bunu yapabilirim.Kullanıcı bana kod sağlamak, böylece node.js ve mongodb.Please ile başlayabilirsiniz böylece yardımcı olabilirnode.js ve mongodb kayıt ve giriş formu oluşturma

+0

Şimdiye kadar ne denediniz? – beny23

cevap

42

birkaç farklı kimlik doğrulama yöntemleri (Şifre, Facebook, Twitter, vb) kullanarak oturum açma yapmak için bir standart basit bir yol sağlar Nodepad application by Alex Young'da yapmaya çalışıyorum. 2 bunlar 2 önemli dosya, bir göz atmalısınız: modelinin

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

bir kısmı şu şekilde görünür:

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

Ben o da explains the code on the dailyjs site düşünüyorum.

+0

Alex'in öğretici tam olarak ihtiyacım vardı. – mwilcox

+3

http://dailyjs.com/2010/12/06/node-tutorial-5/ İşte kimlik doğrulama sayfası. –

10

Başlamak için kolay bir yol için bir göz atın ExpressJS + MongooseJS + MongooseAuth. Özellikle

, son eklenti Sen sen ne olduğunu tam örneğini bulabilirsiniz

+0

bir yolu vardır ben veritabanında (mongodb) giriş bilgilerini saklayabilir ve daha sonra ayrıntıları almak ve belirli bir kullanıcı veritabanında var olup olmadığını kontrol et, eğer evet o zaman kullanıcı başka bir page.else giriş ve yeniden yönlendirilecek o kimse bana referans için kod sağlamak –

+1

@DarHamid Mongoose-auth otomatik olarak kullanıcı bilgilerini (kayıttan sonra şifreli, facebook, twitter, vb) bir mongodb içine saklar. Klonlayın ve örneği çalıştırın. Daha fazla bilgi için Readme.md dosyasına bakın. – k00k

+1

2 yıl sonra Sadly MongooseAuth iyi bakılmamış ve onun yerine PassportJS kullanmak için dikkat .. – Petrogad

21

boilerplate projectexactly this. yapmak için yazdım. Hesap oluşturma, e-posta, oturumlar, parola şifrelemeyi geri döndürdüğünde ve hatırlatıldığında kullanıcıları hatırlamak için yerel çerezleri kullanarak hesap oluşturma, parola alma özelliğini destekler.

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

+0

demo iyi .. ama kod çok kolay bir şekilde yazılmadı:/ – tUrG0n

+3

Katılmıyorum. 13 Haziran 2012'den beri değişmediği sürece, kodun iyi yapılandırıldığını düşünüyorum ve neler olduğunu hemen anlatabilirim. Kontrol etmeye değer. –

+0

Bu benim için harika bir kombi oldu. Gereksinimlerimi karşılamak için (gerektiği gibi) kesinlikle değiştirdim. Bu yaklaşımı pasaportla bütünleştirmeye çalışıyorum. MongoDB ile uğraşmak için Mongoose'a da geçeceğim, daha oraya henüz gelemedim. Her durumda, bu iyi bir referans projesidir. – BRogers