我正在使用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?
答案 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;
};