我正在使用带有内存存储的基本 Node 快速 session 设置,并且我在服务器上有以下代码:
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 未定义,尽管它不在之前登录路由的请求中。我检查了 HTTP header ,奇怪的是没有任何 header 处理来自服务器或客户端的 cookie。现在我不知道可能出现什么问题。
最佳答案
您说cookie: { secure: true }
,但您的网络服务器实际上处于安全连接上吗?如果不是,则不会写入 cookie。
来自docs :
Please note that secure: true is a recommended option. However, it requires an https-enabled website, i.e., HTTPS is necessary for secure cookies. If secure is set, and you access your site over HTTP, the cookie will not be set.
关于node.js - Node express-session中的 session 变量不会保留到下一个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31071651/