gpt4 book ai didi

node.js - 当 auth header 更改时 Express 创建不同的 session

转载 作者:太空宇宙 更新时间:2023-11-04 00:22:46 25 4
gpt4 key购买 nike

我是 express 新手,我正在尝试在用户登录我的应用程序时创建 session 。我正在使用 Passport 进行身份验证。为了登录用户,我正在创建基本策略,并且在基本策略成功后,我将创建一个 JWT token ,将其存储在客户端的 cookie 中,并使用 JWT 策略来处理后续请求。

但我注意到,当我登录时,express-session 正在创建一个具有 Basic header 的 session ,并为后续调用创建另一个具有 JWT header 的 session 。

这是我在登录时保存 session 的代码

signin = function(req, res, next) {
passport.authenticate('basic', function(err, user, info) {
if (err) { return next(err) }
if (!user) {
return res.status(401).json({ error: 'message' });
}
var token = jwt.encode({ user: user}, config.db.secret);
res.cookie('token', token, { maxAge: 900000, httpOnly: true, path: '\/', Secure: true });
res.status(200).json({ success: true, firstName: user.firstName });
delete user.password;
req.session.user = user;
req.session.save();
})(req, res, next);
};

但是当我调试此代码时,它在 req.sessionID 中显示一个 sessionID,并且在以下代码中的 req.sessionID 中显示不同的 sessionID 作为 JWT 身份验证

listProducts = function(req, res) {
debugger;
//here req.session.user is undefined which I have saved at login. and sessionID is also different
res.json({ demo: 'response' });
};

我希望它在整个生命周期中都是相同的 sessionID,直到用户注销我的应用程序。为什么会发生这种情况?有什么解决办法吗?

最佳答案

您将在保存 session 之前发送响应。

尝试保存 session ,然后发送响应。

express-session 修改 res.end 以使其执行 express-session 特定任务,从而引入您所遭受的顺序耦合:https://github.com/expressjs/session/blob/master/index.js#L249

关于node.js - 当 auth header 更改时 Express 创建不同的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43961026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com