Ich fand, dass dies besser funktionierte. Es schien der Schlüssel zu sein, dass das getan werden nach dem req, Benutzernamen, Passwort, aber vor den anderen Variablen, die Sie in die Funktion übergeben möchten. Wenn fertig, wurde am Ende dann platziert:
events.js:160 throw er; // Unhandled 'error' event TypeError: done is not a function
würde zurückgegeben werden.
// =========================================================================
// LOCAL SIGNUP ============================================================
// =========================================================================
// we are using named strategies since we have one for login and one for signup
// by default, if there was no name, it would just be called 'local'
passport.use('local-signup', new LocalStrategy({
// by default, local strategy uses username and password, we will override with email
usernameField : 'username',
passwordField : 'password',
passReqToCallback : true // allows us to pass back the entire request to the callback
},
function(req, username, password, done, fname, lname, email, security_question, security_answer) {
// 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.username' : username }, 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 username 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.fname = fname;
newUser.local.lname = lname;
newUser.local.username = username;
newUser.local.email = email;
newUser.local.password = newUser.generateHash(password);
newUser.local.security_question = security_question;
newUser.local.security_answer = newUser.generateHash(security_answer);
// save the user
newUser.save(function(err) {
if (err)
throw err;
return done(null, newUser);
});
}
});
});
}));
die args req, benutzername passwort und fertig sind okay ... aber wie können wir zusätzliche params wie fname, lname etc ...? vor allem, von wo aus wird es Benutzername und Passwort nehmen ..? von req.body oder von wo wo sonst ..? Danke im Voraus.. – shivaraj