使用cookieSession使用socket.io授权用户

时间:2012-12-29 06:41:18

标签: node.js socket.io session-cookies

我正在使用socket.io的授权方法(详细here)来检查用户是否有权通过检查与用户关联的cookie来使用我的应用。

上述博文相当简单,但我使用cookieSessions将会话数据存储在cookie中。一个很好的问题是stackoverflow,但我无法弄明白。

我想知道如何解密cookieSession数据以访问会话数据。我的一些示例代码:

io.set('authorization', function (data, accept) {

//Check cookie for session data

accept(null, true);});

换句话说,如何在socket.io中访问cookieSession?

1 个答案:

答案 0 :(得分:2)

我使用以下(带护照,但没关系):

io.set('authorization', function(data, accept) {
    var getCookieSession = require('./lib/cookie_session');
    var session = getCookieSession(data.headers, {
        key: 'YOUR KEY',
        secret: 'YOUR SECRET'
    });

    if (session.passport.user) {
        accept(null, true);
    } else {
        accept(null, false);
    }
});

和getCookieSession是以下模块:

var connect = require('connect');

var cookieParser = connect.cookieParser;
var cookieSession = connect.cookieSession;

module.exports = function(headers, opts) {
    var key = opts.key || '_session';
    var secret = opts.secret || '';
    var req = { headers: headers, originalUrl: "/" };
    var res = { on: function() {} };
    var next = function () {};

    cookieParser(secret)(req, res, next);
    cookieSession({ key: key })(req, res, next);

    return req.session;
};