Как использовать аттестат с 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
чтобы получить доступ к соответствующему адресу электронной почты.
Как бы я это сделал? Любые указатели высоко ценятся.