2014-11-19 4 views
0

Я не могу понять, как использовать функцию serializeUser Passport в express/SQL.SerializeUser Passport не отвечает

Вот мои вопросы:

  1. Как знать passport.serializeUser, что "пользователь" есть? Где я должен был это указать?
  2. Как паспорт.serializeUser знает, какой объект запроса должен быть связан с файлом cookie?

Моя конфигурация приложения выглядит следующим образом:

var passport = require('passport'); 
app.use(session({ secret: 'Secret', 
       saveUninitialized: true, 
       resave: true})); 
app.use(passport.initialize()); 
app.use(passport.session()); 

Я также разоблачить следующий код приложения в twitter_auth.js:

// twitter authentication and login 
app.get('/auth/twitter', passport.authenticate('twitter')); 

// handle callback after twitter has authenticated user 
app.get('/auth/twitter/callback',passport.authenticate('twitter',{ 
      successRedirect: '/', 
      failureRedirect: '/' 
})); 

// used to serialize user 
passport.serializeUser(function(user,done){ 
    done(null,user); 
}); 


// used to deserialize the user 
passport.deserializeUser(function(User_ID,done){ 
    connection.query('SELECT * from UsersTable where User_ID = '+User_ID,  function(err,rows){ 
     done(err,rows[0]); 
    }); 
}); 

Когда я пытаюсь пятнистость его:

// used to serialize user 
passport.serializeUser(function(user,done){ 
console.log('spotted here!'); 
done(null,user); 
}); 

Я ничего не вижу. Что не так?

ответ

0

Чтобы ответить на два вопроса:

  1. Вы должны определить, что «пользователь» находится внутри кода аутентификации.

    Он должен выглядеть следующим образом:

    passport.use(new TwitterStrategy({ 
        consumerKey:*******, 
        consumerSecret:******, 
        callbackURL:'/auth/twitter/callback' 
    }, 
    function(token, tokenSecret, profile,done){ 
        var user = db.call(retrieve a user) ; //whatever you want it to be 
        done(null,user); 
    }); 
    
  2. Маршрут аутентификации был доступен через какой-то объект запроса, чтобы начать с, и это код там:

    done(null,user); 
    

    , который знает вашего объекта REQ , По-моему, это так.

Хороший источник на это: http://toon.io/understanding-passportjs-authentication-flow/