2016-04-21 39 views
4

我正在一個節點+ passport.js身份驗證。我做了一個簡單的登錄/註冊應用程序。它工作正常,但它只存儲用戶名和密碼。如何存儲其他表單字段與passport-local.js

如何通過帶有工作登錄護照認證的signup.html頁面將其他表單字段(如電話號碼,電子郵件,興趣愛好,性別)存儲到數據庫中?任何人都可以對這個解決方案,所以我可以存儲在數據庫中的所有字段....

//my schema is :-- 
var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 
var userSchema = mongoose.Schema({ 
    local   : { 
     username  : String, 
     gender  : String, 
     phone  : String, 
     email  : String, 
     password  : String 
    } 
}); 
userSchema.methods.generateHash = function(password) { 
    return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null); 
}; 
userSchema.methods.validPassword = function(password) { 
    return bcrypt.compareSync(password, this.local.password); 
}; 


var User = mongoose.model('user', userSchema); 

module.exports = User; 

在這段代碼中我使用電子郵件,用戶名,密碼,性別電話的模式,並給出領域中signup.html頁。但它僅存儲的用戶名和密碼只能.........領域

回答

0

添加option passReqToCallback,您可以從req.body訪問所有請求體數據:

passport.use(new LocalStrategy({ 
    passReqToCallback: true 
}, function (req, username, password, cb) { 
    // Form fields are in req.body if using body-parser 
    // ... 
}); 
5

打開passport.js文件(gernally內config文件夾)

找到這行代碼。

passport.use('local-signup', new LocalStrategy({ // 'login-signup' is optional here 
    usernameField : 'email', 
    passwordField : 'password',   
    passReqToCallback : true },function(req, email, password, done) { 
    var gender = req.body.gender; 
    var username = req.body.username; 
    var phone = req.body.phone; 
// Now you can access gender username and phone 

})); 
相關問題