【发布时间】:2016-04-13 01:17:28
【问题描述】:
我必须知道何时调用了 Serialize 和 Deserialize,为了进行测试,我已经输入了 alert(user.id),但没有发生任何操作。
我有一些疑问:
-
user对象从哪里接收到passport.serializeUser(function(user, done){... -
process.nextTick()在这里扮演什么角色 - 如果我发送多个表单值,例如(姓名、电子邮件、密码、地址、手机),如何调用回调函数,即
function(req, email, password, done)。
这里是代码:-
//config/passport.js
var LocalStrategy = require('passport-local').Strategy;
var User = require('../app/models/user');
module.exports = function(passport) {
passport.serializeUser(function(user, done) {
alert(user.id);//// Here is my testing alert
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
passport.use('local-signup', new LocalStrategy({
usernameField : 'email',
passwordField : 'password',
passReqToCallback : true
},
function(req, email, password, done) {
process.nextTick(function() {
User.findOne({ 'local.email' : email }, function(err, user) {
if (err)
return done(err);
if (user) {
return done(null, false, req.flash('signupMessage', 'That email is already taken.'));
} else {
var newUser = new User();
newUser.local.email = email;
newUser.local.password = newUser.generateHash(password);
newUser.save(function(err) {
if (err)
throw err;
return done(null, newUser);
});
}
});
});
}));
}
【问题讨论】:
标签: node.js express passport.js