【发布时间】:2026-01-13 16:15:02
【问题描述】:
我使用node.js 和express.js 来实现我的网络服务器。
我使用 express-session 模块 (https://github.com/expressjs/session) 来处理 Web 会话,并使用 connect-redis (https://github.com/tj/connect-redis) 来处理会话存储。我相信这与商店的类型无关,但如果你问我告诉你。
在用户登录并更改一些敏感数据后,例如。更改密码,我想更新ssid。所以我使用req.session.regenerate()。但是,在函数调用之后,所有其他会话数据都丢失了。更新 ssid 后如何保留会话数据?
什么实际行为:
req.session.userId = 100;
req.session.regenerate(function(err) {
// will have a new session here
console.log(req.session.userId); // undefined
});
我想要什么:
req.session.userId = 100;
req.session.regenerate(function(err) {
// will have a new session here
console.log(req.session.userId); // 100
});
以下是我所做的。它有效,但它是正确的方法吗?
var sessionData = req.session;
req.session.regenerate(function(err) {
// will have a new session here
req.session = sessionData;
});
【问题讨论】:
标签: node.js express session express-session