2

我正在使用socket.io的授权方法(这里详细介绍)通过检查与用户关联的cookie来检查用户是否被授权使用我的应用程序。

上面的博客文章相当直截了当,但我使用 cookieSessions 将会话数据存储在 cookie 中。一个很好的问题是关于stackoverflow,但我无法弄清楚。

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

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

//Check cookie for session data

accept(null, true);});

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

4

1 回答 1

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;
};
于 2013-01-17T14:15:08.707 回答