相关疑难解决方法(0)

如何使用express和socket.io的护照?

我目前正在尝试为我的node.js应用程序设置一个基本身份验证系统.目前我使用express(3.0.0rc5),passport(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);
});
Run Code Online (Sandbox Code Playgroud)

现在,我必须在socket.io事件中仅使用cookie信息从会话中提取电子邮件地址.

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?
});
Run Code Online (Sandbox Code Playgroud)

因此,如果我没有弄错,现在可以使用任务deserializeUser来访问相应的电子邮件地址.

我该怎么办?任何指针都非常感谢.

connect express socket.io passport.js

43
推荐指数
2
解决办法
4万
查看次数

标签 统计

connect ×1

express ×1

passport.js ×1

socket.io ×1