Tag: 会话

警告:connect.session()MemoryStore不是为生产环境devise的,因为它会泄漏内存,并且不会扩展到单个进程

在这里好日子是我的代码: var express = require('express'); var session = require('express-session'); var app = express(); app.set('trust proxy', 1); app.use(session({ secret: 'secret', saveUninitialized: true, resave: false, maxAge: 1000 * 60 * 15, cookie:{ secure: true } })); 这段代码总是返回我的日志a: 警告:connect.session()MemoryStore不是为生产环境devise的,因为它会泄漏内存,并且不会扩展一个进程。 我尝试了谷歌search,但我似乎并不了解一些教程。 对不起,我的英语不好。

在Node.js Express / Connect中,有没有办法将会话设置为无穷大?

我是这样做的: app.use(express.session({ cookie:{domain:"."+settings.c.SITE_DOMAIN}, secret:'abc', store: redis_store, })); 当我login到我的redis并键入TTL sess:… ,似乎这个会话有一个到期。 我怎样才能使会议永不过期? (一切)。 我也希望cookies永不过期。

如何从请求中获取sessionId?

我使用快递来支持我的会话pipe理: app.use(express.cookieParser('your secret here')); app.use(express.session({secret: 'mysecretcode'})); 我从请求中提取和保存sessionId。 但是,我从req.sessionID获得的ID与cookie中发送的ID不同: req.sessionID –> 'E7oSoKmQfcMKnk5_jA5tF5vR' cookie.connect.sid –> 's%3AE7oSoKmQfcMKnk5_jA5tF5vR.DQnYdDDcFn8K2JJHMgWL5DTzNYYwIU3DA5a10WImA7U'; 为什么这两个不同? 如何在发送回复之前获取connect.sid?

如何保持express req.session对象?

我对学习Node和Express非常陌生,而且我仍然试图用代码来绕过代码stream。 假设我们在session.js中有这样的代码: app.post('/session', notLoggedIn, function(req, res) { User.findOne({ username: req.body.username, password: req.body.password }, function (err, user) { if (err) { return next(err); } if (user) { req.session.user = user; res.redirect('/users'); } else { res.redirect('/session/new'); } }); }); 假设用户是必需的mongo模式。 我觉得奇怪的是session.user分配: req.session.user = user; 由于reqvariables在redirect之后会超出范围,但是我们显然正在做这个来保存用户数据,所以我只想知道下面的哪个场景描述了正在发生的事情。 (A)被分配给req参数的参数(当调用callback时)被存储在/仍然在堆栈上的某个地方,(B)会话被存储在堆栈上并被分配给一个新的req对象(C)与B相同,但在用户领域(似乎不太可能,也许在我的部分)。

从socket.iocallback中修改会话数据

我目前使用这个堆栈expres,socket.io,sessionstore。 我跟着这里的文章http://www.danielbaulig.de/socket-ioexpress/ 。 那么问题是,我不能修改socket.iocallback中的会话值。 从快捷方式访问效果很好,每次刷新后项目都会增加。 app.get('/mysession', function(req, res) { req.session.item++; console.log(req.session); res.render('session.jade', { title: 'Sample title' }); }); 在socket.io方面使用它不,这里是问题,也许我设置了错误的对象。 var io = io.listen(app); io.sockets.on('connection', function(socket) { var handshake = socket.handshake; onlineCount++; console.log('Well done id %s', handshake.sessionID); handshake.session.item++; console.log(handshake.session); }); 这是桥码。 io.set('authorization', function(data, accept) { if (data.headers.cookie) { data.cookie = parseCookie(data.headers.cookie); data.sessionID = data.cookie['express.sid']; sessionStore.get(data.sessionID, function(err, […]

Expressjs不会销毁会话

我有一个骨干视图,它发送一个Ajax调用服务器来删除一个会话。 在服务器上触发以下事件: app.delete('/session', function(req, res) { if (req.session) { req.session.destroy(function() { res.clearCookie('connect.sid', { path: '/' }); res.send('removed session', 200); }); } else { res.send('no session assigned', 500); } }); 奇怪的是,我可以多次按下注销button,而不会得到一个HTTP 500的错误代码。 铬也显示我仍然存在一个cookie。 出了什么问题? 问候 编辑 : 我发现这不是一个会话问题,而是一个cookie。 我添加res.clearCookie到路线。 不幸的是,行为(cookie,会话保持活跃)没有改变 编辑2 :我现在res.clearCookie一些参数=> res.clearCookie('connect.sid',{path:'/'}); 现在至lesscookie在浏览器中消失了。 但会议似乎仍然可用。 或者至less我可以多次呼叫注销路线,即使req.session也应该是错误的 编辑3:我现在从redis中删除所有会话,并重新启动一切(redis,节点,浏览器)。 比我再次login并注销。 这个工作到目前为止,但是当我用F5来翻页时,我得到一个新的会话。 为什么?

帆JS – 会议

每次页面重新加载,我运行这个函数: init: function(req, res) { console.log("Session: "); console.log(req.session); if (req.session.player_id !== undefined) { Player.getPlayer(req.session.player_id); } else { req.session.player_id = sails.uuid.v4(); req.session.save(); console.log("Session saved"); Player.createPlayer(req.session.player_id); console.log("Creating player: " + req.session.player_id); } } 问题是,我每次跑步 console.log("Session: "); console.log(req.session); player_id不在那里,每次页面被重载,if语句都返回false。 console.log("Creating player: " + req.session.player_id); 返回正确的值,但我不明白为什么会话不按照每个页面上的用户重新加载?

对象解构的任何方面是通过引用分配的吗?

我有一个程序是递增会话cookie上的请求,并将其打印到控制台。 最初,我试图弄清楚如何保存这些数据。 login几个地方后,我意识到,尽pipe我有一个单独的variables来保存我认为是req成员对象的临时版本的数据正在保存/更改。 这是使我意识到实际的对象正在改变时,我增加了我分配给它的variables的代码: recordRequest(req) { const { ip } = req.info; const { requestsPerSecond } = req.session; if (req.originalUrl.split('/').filter(Boolean)[0] == 'www.example.com') { requestsPerSecond[ip] = requestsPerSecond[ip] + 1 || 1; } console.log(req.session.requestsPerSecond); } 我似乎无法在这里或在Mozilla的文档中find这是否是有意的行为,不pipe这是否是我使用const的结果(在这里你可以改变成员variables),或者有一些奇怪的错误正在进行。 我也有麻烦重现这个例子在一个较小的规模,但我证实没有进入或走出function正在影响这一块代码。 这不是打破我的代码或任何东西(这实际上使我的生活更容易),但我想明白为什么发生这种情况!

Express-session和express-socket.io-session在angular2 / typecript环境中不起作用

所以我有一个script.js设置服务器,如下所示: var io_session = require("express-socket.io-session"); var e_session = require("express-session")({ secret: "a-secret", resave: true, saveUninitialized: true }); (…) //this block is the last "io.use" before the socket logic (io.on("connection")) io.use(io_session(e_session,{ autoSave: true })); 在我的typecript / angular2前端环境中使用下面的种子https://github.com/NathanWalker/angular2-seed-advanced我使用Http类在多个服务/组件中执行http请求。 然而,当我尝试再次请求服务器的东西,我尝试logging用户会话,什么都没有logging…我不知道为什么会发生这样的事情,不仅用户的会话不被保留,而且会话不是从http共享到套接字层系统(很明显,如果它没有被创build,它也不被共享)。 有人知道这里可能是错的吗? 我可以提供更多的信息,如果需要,但我真的不知道什么是失踪…非常感谢您的帮助。

会话cookie不会使用ajax和nodejs服务器进行更改

我想在asynchronous请求后更改会话cookie,但不pipe我尝试过什么,我一直在失败。 我的要求如下: $.ajax({ type: "POST", url: "/setStatus", data: { userId : _userId, token: _token, tokenSecret : _tokenSecret, service : service, loggedIn : _loggedIn, authorized : _authorized }, xhrFields: { withCredentials: true }, crossDomain: true }).done(function(reply) { alert('finished'); }); 在服务器上设置会话variables。 exports.setStatus = function(req, res) { req.session.userId = req.body.userId; req.session.token = req.body.token; req.session.tokenSecret = req.body.tokenSecret; req.session.service = […]