[英]setting session data in nodejs express socket.io
我正在嘗試從互聯網收集的以下代碼
var io = require('socket.io'),
express = require('express'),
app = express(),
server = require('http').createServer(app),
connect = require('express/node_modules/connect');
var RedisStore = require("connect-redis")(express);
var sessionStore = new RedisStore()
var sessionSecret = 'sexret';
var sessionKey = 'sexpress.sid';
var sioCookieParser = express.cookieParser(sessionSecret);
app.configure(function() {
app.use(connect.cookieParser());
app.use(connect.session({ store: sessionStore, secret: sessionSecret, key: sessionKey }));
app.use(express.static(__dirname + '/public'));
});
var sio = io.listen(server);
sio.set('authorization', function(data, accept) {
sioCookieParser(data, {}, function(err) {
if (err) {
accept(err, false);
} else {
sessionStore.get(data.signedCookies[sessionKey], function(err, session) {
if (err || !session) {
accept('Session error', false);
} else {
// I'm trying to set data in to the session
if (session.yyy) {
session.yyy += 1;
} else {
session.yyy = 0;
}
console.log("%j", session);
// But it never set
data.session = session;
data.sessionId = data.signedCookies[sessionKey];
accept(null, true);
}
});
}
});
});
server.listen(1337);
我也嘗試過,但是效果不佳,
sessionStore.get(data.signedCookies[sessionKey], function(err, session) {
if (err || !session) {
accept('Session error', false);
} else {
if (session.yyy) {
session.yyy += 1;
} else {
session.yyy = 0;
}
console.log("%j", session);
sessionStore.set(data.signedCookies[sessionKey], session, function(err, session) {
data.session = session;
data.sessionId = data.signedCookies[sessionKey];
accept(null, true);
});
}
});
我應該如何在會話中設置數據?
好像sessionId應該是Morgan在此答案中提到的sessionID :
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.