节点快速会话中的会话variables不会持续到下一个请求

我正在使用内存存储的基本节点快速会话设置,我有这个代码在服务器上:

app.use(require('express-session')({ secret: 'keyboard cat', resave: false, saveUninitialized: true, cookie: { secure: true } })); app.post('/api/logIn', function(req, res) { req.session.userName = req.body.userName; } app.get('/api/getProfile', function(req, res) { User.findOne({'userName' : req.session.userName}, function (err, userProfile) { console.log('getProfile executed for user:' + req.session.userName); if (err) throw err; console.log(userProfile); }); }); 

问题是来自getProfile路由的req.session.userName是未定义的,虽然它不在之前的login路由请求中。 我检查了HTTP头,奇怪的是从服务器或客户端没有处理cookie的头文件。 现在我不知道可能是什么问题。

你说cookie: { secure: true } ,但你的web服务器实际上是在一个安全的连接? 如果没有,那么cookie将不会被写入。

从文档 :

请注意,secure:true是推荐的选项。 但是,它需要启用https的网站,即HTTPS对于安全cookie是必需的。 如果设置了安全性,并且您通过HTTP访问您的站点,则Cookie不会被设置。

会话需要存储在一个cookie中,所以我们用它来parsing它,有些像这样:

 var cookieParser = require('cookie-parser'); // must use cookieParser before expressSession app.use(cookieParser()); 

完整的例子: http : //code.runnable.com/U0tEnHwraXYyp-JG/simple-usage-of-express-session-and-cookie-parser-with-express-for-node-js