2015-09-06 3 views
0

Используя модуль Passport в node.js Express, я успешно получил перенаправление после того, как посетитель регистрируется через 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()); 
...... 

После этого мы можем получить доступ к информации в req.user в обратном вызове successRedirect.