Я смог так долго регистрировать пользователей в использовании Facebook. Однако, как только я восстанавливаю информацию из Facebook, я ее теряю.Экспресс 4 и паспорт не удается создать сеанс
Я не знаю, должен ли я быть тем, кто создает сеанс, или я что-то упускаю.
Это то, что я сделал: Конфигурация
var passport = require('passport');
passport.use(
new FacebookStrategy(
{
clientID: FACEBOOK_APP_ID,
clientSecret: FACEBOOK_APP_SECRET,
callbackURL: 'http://localhost:8080/auth/facebook/callback'
},
function(accessToken, refreshToken, profile, done) {
process.nextTick(function() {
//Assuming user exists
console.log("CALLBACK passport.use", profile);
return done(null, profile); //SHOWS THE USER
});
}
)
);
сериализации и десериализации, как console.log
правильно показать пользователю
passport.serializeUser(function(user, done) {
console.log("SERIALIZE USER", user)
done(null, user); //SHOWS USER
});
passport.deserializeUser(function(obj, done) {
console.log("DESERIALIZE USER", obj)
done(null, obj); //SHOWS USER
});
Внутри кластера (1 из 4), он правильно делает переадресацию до /success
. Однако, console.log
контроллера success
отображается неопределенный. Я попытался без кластеров, и этот вопрос остается тем же самым ...
else if (!cluster.isMaster) {
//...
app.use(passport.initialize());
app.use(passport.session());
app.get('/auth/facebook', passport.authenticate('facebook'));
app.get('/auth/facebook/callback',
passport.authenticate('facebook', {
successRedirect : '/success',
failureRedirect : '/'
}));
app.get('/success', function(req, res, next) {
console.log("\n\n\nSESSION", req.user); //SHOWS req.user as UNDEFINED ;(
res.send('Successfully logged in.');
});
Результат профиля facebook только один раз возвращен, также вы уверены, что cookie был настроен правильно? Возникает ли проблема даже без использования модуля кластера? –
Попробуйте положить app.use (passport.initialize()); перед выполнением пассива serializeUser и deserializeUser. –
В каком хранилище вы используете? – robertklep