2012-12-29 75 views
2

我使用socket.io的授权方法(具体here),以检查用户是否被授权通过检查与用户相关的Cookie使用我的应用程序授权用户。使用cookieSession使用socket.io

上述博客文章是相当简单的,但我使用cookieSessions在Cookie中存储会话数据。一个很好的问题是stackoverflow,但我无法弄清楚。

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

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

//Check cookie for session data 

accept(null, true);}); 

换句话说,我怎样才能访问socket.io中的cookieSession?

回答

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; 
}; 
+0

我早就发现这个问题的答案。有人在github上做了一个像魅力一样工作的主意。 – shash7