我正在尝试使用mongoDb创建一个带有护照本地身份验证的简单node.js应用程序并将其表达为框架,但我遇到了问题
每当我尝试使用注册表单将数据提交到数据库中时,在单击提交后,它立即显示在节点终端中:
这是我的用户架构的样子:
var mongoose = require('mongoose'); var bcrypt = require('bcrypt-nodejs'); // define the schema for our user model var userSchema = mongoose.Schema({ local : { name : String,username : String,mobile : Number,email : String,gender : String,password : String } }); // methods ====================== // generating a hash userSchema.methods.generateHash = function(password) { return bcrypt.hashSync(password,bcrypt.genSaltSync(8),null); }; // checking if password is valid userSchema.methods.validPassword = function(password) { return bcrypt.compareSync(password,this.local.password); }; // create the model for users and expose it to our app module.exports = mongoose.model('User',userSchema);
和我的路由器文件:
// process the signup form app.post('/signup',passport.authenticate('local-signup',{ successRedirect : '/profile',// redirect to the secure profile section failureRedirect : '/signup',// redirect back to the signup page if there is an error failureFlash : true // allow flash messages }));
注册逻辑的护照配置:
passport.use('local-signup',new LocalStrategy({ nameField : 'name',usernameField : 'username',mobileField : 'mobile',emailField : 'email',genderField : 'gender',passwordField : 'password',passReqToCallback : true // allows us to pass back the entire request to the callback },function(req,name,username,mobile,email,gender,password,done) { // asynchronous // User.findOne wont fire unless data is sent back process.nextTick(function() { // find a user whose email is the same as the forms email // we are checking to see if the user trying to login already exists User.findOne({ 'local.email' : email },function(err,user) { // if there are any errors,return the error if (err) return done(err); // check to see if theres already a user with that email if (user) { return done(null,false,req.flash('signupMessage','That email is already taken.')); } else { // if there is no user with that email // create the user var newUser = new User(); // set the user's local credentials newUser.local.name = name; newUser.local.username = username; newUser.local.mobile = mobile; newUser.local.email = email; newUser.local.gender = gender; newUser.local.password = newUser.generateHash(password); // save the user newUser.save(function(err) { if (err) throw err; return done(null,newUser); }); } }); }); }));
我是node.js以及mongoDb的新手,请帮帮我
谢谢