Jak korzystać z paszportu za pomocą express i socket.io?

Obecnie próbuję skonfigurować podstawowy system uwierzytelniania dla mojej aplikacji node.js. Na razie używam express (3.0.0rc5), paszportu (0.1.12) i socket.io (0.9.10) z Mongoose as Store dla danych sesji. Bawiłem się także zeveryauth ale nie lubiłem pracować z obietnicami.

Obecna sytuacja:

Uwierzytelnianie przez paszport (strategia na Facebooku) jest udane, asession.sid cookie jest ustawiane na kliencie po przekierowaniu i mogę zobaczyć dokument sesji w mojej bazie danych. Mogę uzyskać dostęp do cookie sesji wsocket.io przezsocket.handshake.headers.cookie.

Jeśli dobrze zrozumiałem pojęcie paszportu, po udanymauthentication passport.serializeUser jest wywoływane, co pozwala mi dodawać informacje do sesji. W moim przypadku najważniejszą informacją jest e-mail, więc ustawiłem serializator w następujący sposób:

passport.serializeUser(function(user, done) {
  done(null, user.email);
});

Teraz jestem w punkcie, w którym muszę użyć tylko informacji cookie w moim zdarzeniu socket.io, aby wyodrębnić adres e-mail z sesji.

var connect = require('connect'),
    parseSignedCookie = connect.utils.parseSignedCookie,
    cookie            = require('express/node_modules/cookie');

io.on('connection', function(socket) {
    if(socket.handshake.headers.cookie) {
        var cookie = cookie.parse(socket.handshake.headers.cookie);
        var sessionID = parseSignedCookie(cookie['connect.sid'], 'secret');
    }
});

passport.deserializeUser(function(id, done) {
    // so, what is supposed to be done here?
});

Więc jeśli się nie mylę, zadanie jest teraz do wykorzystaniadeserializeUser aby uzyskać dostęp do odpowiedniego adresu e-mail.

Jak bym to zrobił? Wszelkie wskazówki są wysoko cenione.

questionAnswers(3)

yourAnswerToTheQuestion