node.js - Node express-session中的 session 变量不会保留到下一个请求

标签 node.js session

我正在使用带有内存存储的基本 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/

相关文章:

asp.net-mvc - MVC 中是否有最佳实践和推荐的 Session 变量替代方案

java - 为什么 JSP 中的 cookie 对象只能包含 String 类型的值?

javascript - 页面无需登录验证即可登录

javascript - waitFor() 找不到页面上显示的元素

node.js - 使用 Node js 创建简单的服务器(自定义协议(protocol))

node.js - Uncaught Error : spawn .\node.exe ENOENT

session - Tomcat servlet 同步

forms - 玩转框架Scala——获取表单中的session值

node.js - 如何使Node.js像浏览器一样请求https服务器?

node.js - Azure IOT 集线器设备 "Suspension"