gpt4 book ai didi

javascript - Node.js 在 session 到期 Express 和 Passport 上运行函数

转载 作者:搜寻专家 更新时间:2023-10-31 22:52:44 25 4
gpt4 key购买 nike

我使用以下代码(使用 Express.js 和 Passport.js)设置了最长 session 时间。

  app.use(express.session({
cookie: {
maxAge : 3600000
}
}));

我想在 session 过期时运行一个函数(用于我的日志文件和分析)。类似这样的事情:

app.use(express.session.onExpiry(function(user){
console.log('User session for ' + user + ' has expired.')
});
);

最佳答案

您正在做的是设置一个 cookie“expires”参数。浏览器会在 cookie 过期后将其清除,而您对此一无所知 — 它根本不会与 future 的请求之一一起到达。

可以用来准确知道 cookie 是否过期的技巧是将时间戳写入 cookie 并将其生命周期(“过期”值)设置为某个遥远的时间(比如 2037 年)。通过这种方式,您可以手动检查您是否仍想将给定的 cookie 视为有效,或者是否想更新它。

遗憾的是,您必须按照以下行编写自己的代码

app.use(function(req, res, next) {
//Checking previously set cookie (if there is one)
var session = JSON.parse(req.cookies['session'] || '');
if (session && new Date(session.expires) < new Date()) {
console.log('User session has expired.')
}

//Resetting the cookie
res.cookie('session', JSON.stringify({ session: <sessionIDKeyHere>, expires: Date.now() + 3600000 }), {
expires: new Date(2037, 0, 1),
httpOnly: true,
secure: true //Do you have https? If no, set to false
});

next();
});

关于javascript - Node.js 在 session 到期 Express 和 Passport 上运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22925886/

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