Express Passport无法为本地身份验证添加参数

Express Passport无法为本地身份验证添加参数,express,passport.js,Express,Passport.js,我在本教程中使用passport本地身份验证: 它工作正常,但我不想在我的数据库中为我的用户添加一些参数,比如他的名字和姓氏。我不知道如何使用这个函数,因为它是一个回调函数,在完成后我无法传递some参数 您能帮助我吗?这很简单,请尝试使用req.body.yourvariable,以下是您的代码: 并将passReqToCallback:true添加到参数 这很简单,请尝试使用req.body.yourvariable,以下是您的代码: 并将passReqToCallback:true添加到

我在本教程中使用passport本地身份验证:

它工作正常,但我不想在我的数据库中为我的用户添加一些参数,比如他的名字和姓氏。我不知道如何使用这个函数,因为它是一个回调函数,在完成后我无法传递some参数


您能帮助我吗?

这很简单,请尝试使用req.body.yourvariable,以下是您的代码: 并将passReqToCallback:true添加到参数


这很简单,请尝试使用req.body.yourvariable,以下是您的代码: 并将passReqToCallback:true添加到参数

    passport.use('local-signup', new LocalStrategy({
                // by default, local strategy uses username and password, we will override with email
                usernameField : 'email',
                passwordField : 'password',
                lastnameField : 'lastname', // here I added this field
                firstnameField : 'first name', // here I added this field
            },
            function(req, email, 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.email    = email;
                            newUser.local.password = newUser.generateHash(password);
// here I want to save my field :
                            newUser.local.lastname = lastname;
                            newUser.local.firstname = firstname;

                            // save the user
                            newUser.save(function(err) {
                                if (err)
                                    throw err;
                                return done(null, newUser);
                            });
                        }

                    });

                });
            }));
passport.use('local-signup', new LocalStrategy({
            // by default, local strategy uses username and password, we will override with email
            usernameField : 'email',
            passwordField : 'password',
            passReqToCallback : true // allows us to pass back the entire request to the callback
        },
        function(req, email, 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.email    = email;
                        newUser.local.password = newUser.generateHash(password);
                        newUser.local.lastname = req.body.lastname;
                        newUser.local.firstname = req.body.firstname;

                        // save the user
                        newUser.save(function(err) {
                            if (err)
                                throw err;
                            return done(null, newUser);
                        });
                    }

                });

            });
        }));