express.js parsing cookies?
express.js parsing cookies?
我正试图使用一个旧的库ballows.io作为聊天应用程序的基础,但它已经过时了,在这个特定的代码中,我正试图找出如何使用express 4x解析cookie以获得sid,而无需从req.session
获得它
既然express 4x不再使用connect
,我怎么能在新的express版本中做类似于下面的事情呢?
/*
* Module dependencies
*/
var sio = require('socket.io')
, parseCookies = require('connect').utils.parseSignedCookies
, cookie = require('cookie')
, fs = require('fs');
/**
* Expose Sockets initialization
*/
module.exports = Sockets;
/**
* Socket.io
*
* @param {Express} app `Express` instance.
* @param {HTTPServer} server `http` server instance.
* @api public
*/
function Sockets (app, server) {
var config = app.get('config');
var client = app.get('redisClient');
var sessionStore = app.get('sessionStore');
var io = sio.listen(server);
io.set('authorization', function (hsData, accept) {
if(hsData.headers.cookie) {
var cookies = parseCookies(cookie.parse(hsData.headers.cookie), config.session.secret)
, sid = cookies['balloons'];
sessionStore.load(sid, function(err, session) {
if(err || !session) {
return accept('Error retrieving session!', false);
}
hsData.balloons = {
user: session.passport.user,
room: /'/(?:([^'/]+?))'/?$/g.exec(hsData.headers.referer)[1]
};
return accept(null, true);
});
} else {
return accept('No cookie transmitted.', false);
}
});
});
};
不确定这是否有帮助,但express 4.x中的Cookie解析已提取到cookie-parser
包中。我不确定,但你可以用cookieParser.parseSignedCookies`.替换connect.util.parseSignedCookies
这就是我能帮你的全部,因为我还没怎么用socket.io。
function Sockets (app, server, pub, sub, sessionStore) {
var config = app.get('config');
var secrets = require('./config/secrets');
var client = pub;
var io = sio.listen(server);
io.set('authorization', function (handshake, callback) {
if(handshake.headers.cookie) {
// pay attention here, this is how you parse, make sure you use
// cookie-parser and cookie
var cookies = cookie.parse(handshake.headers.cookie);
var sid = cookieParser.signedCookie(cookies['balloons'], secrets.sessionSecret);
// get the session data from the session store
sessionStore.load(sid, function(err, session) {
if(err || !session) {
return callback('Error retrieving session!', false);
}
// this is not storing the data into the handshake object
handshake.headers.xygaming = {
user: session.passport.user,
room: /'/(?:([^'/]+?))'/?$/g.exec(handshake.headers.referer)[1]
};
return callback(null, true);
});
} else {
return callback('No cookie transmitted.', false);
}
});
}
相关文章:
- angularjs中$cookiestore和$cookies之间的差异
- SCEditor BBcode to HTML parsing
- Javascript Cookies在Safari中不起作用
- AngularJs的$cookies在过期时间内不起作用
- Chrome Extensions and Cookies
- Angular - $cookies is undefined
- JS cookies undefined?
- 使用$cookies和$stateChangeStart检查sessionID是否超过了最大调用堆栈
- JavaScript validation and cookies
- Chrome 扩展 cookies.getAll 不起作用
- Cookies is html and javascript
- CookieParser vs req.cookies expressjs
- parsing .net DateTime in Ruby & JavaScript
- "Cookies的这个实例“;在nodejs cookie中间件的源代码中
- PHP Cookies使用谷歌活动URL中的变量
- jQuery UI Accordion+Cookies-默认关闭
- Json javascript parsing
- Javascript HighCharts parsing CSV
- 角度$cookies不持久
- express.js parsing cookies?