2015-09-06 77 views
0

在node.js Express中使用Passport模块,访问者通过Facebook登录后,我已成功获取重定向。以下是我的部分代码:如何通过node.js登录后记住会话Express Passport

app.use(passport.initialize()); 
app.use(passport.session()); 
passport.use(new FacebookStrategy({ 
    clientID: '999999999999999', 
    clientSecret: 'ffffffffffffffffffffffffffffffff', 
    callbackURL: 'https://xxxxxxxxx.com/auth/facebook/callback' 
}, function(accessToken, refreshToken, profile, done) { 
    process.nextTick(function() { 
    done(null, profile); 
    }); 
})); 
app.get('/auth/facebook', passport.authenticate('facebook')); 
app.get('/auth/facebook/callback', passport.authenticate('facebook', { 
    successRedirect: '/register?provider=facebook', 
    failureRedirect: '/', 
    failureFlash: true 
})); 
passport.serializeUser(function(user, done) {done(null, user);}); 
passport.deserializeUser(function(obj, done) {done(null, obj);}); 

我的问题是:我们如何记住会话?似乎没有办法将值传出.nextTick()函数,我也不能注册一个cookie ...

回答

0

我刚刚意识到我必须在初始化之前初始化cookieParser()和cookieSession()护照。

app.use(cookieParser()); 
app.use(cookieSession({ 
    secret: config.sessionSecret, 
    cookie: { 
    maxAge: config.sessionMaxAge 
    } 
})); 
app.use(passport.initialize()); 
app.use(passport.session()); 
...... 

之后,我们可以在successRedirect回调中访问req.user中的信息。