Как использовать аттестат с express и socket.io?

В настоящее время я пытаюсь настроить базовую систему аутентификации для моего приложения node.js. На данный момент я использую экспресс (3.0.0rc5), паспорт (0.1.12) и socket.io (0.9.10) с Mongoose в качестве хранилища для данных сеанса. Я также играл сeveryauth но я неМне нравится работать с обещаниями.

Текущая ситуация:

Аутентификация через паспорт (стратегия facebook) прошла успешно,session.sid Cookie устанавливается на клиенте после перенаправления, и я могу видеть документ сеанса в моей базе данных. Я могу получить доступ к сессионному cookie вsocket.io через .socket.handshake.headers.cookie

Если я правильно понял концепцию паспорта, после успешногоauthentication passport.serializeUser называется, что позволяет мне добавить информацию к сеансу. В моем случае наиболее важной информацией является электронная почта, поэтому я настроил сериализатор следующим образом:

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

Теперь я нахожусь в точке, где мне нужно использовать только информацию cookie в моем событии socket.io для извлечения адреса электронной почты из сеанса.

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?
});

Так что если я не ошибаюсь, сейчас стоит задача использоватьdeserializeUser чтобы получить доступ к соответствующему адресу электронной почты.

Как бы я это сделал? Любые указатели высоко ценятся.

Ответы на вопрос(3)

Ваш ответ на вопрос