我尝试根据从数据库中提取的值动态设置cookie-session
的到期时间。对于某些用户,该值可能小于或大于其他用户。
当服务器初始化时,我是这样设置我的cookie会话的:
server.use(require('cookie-session')({
name: 'session',
secret: keys.session.secret,
maxAge: 1 * 10 * 60 * 1000,
}));
我想根据不活动情况重置cookie,因此此代码根据活动情况将到期日期重置为maxAge值。
server.use(async (req, res, next) => {
try {
// Reset inactivity
// Update a value in the cookie so that the set-cookie will be sent.
// Only changes every minute so that it's not sent with every request.
req.session.nowInMinutes = Math.floor(Date.now() / 60e3); //
....
因此,根据网上的一些研究,我看到我应该能够重置到期的值,这样做:
// 30 seconds is just a test. I will pull the expiry value from the database based // on
// user ID but for now if a login is detected change the expiry date to 30 seconds
//
if (req.user) {
// Reset max age of cookie to 30 seconds
res.cookie('cookieName', 'value', { maxAge: 30 * 1000 });
}
这似乎不起作用。浏览器中的会话值在当前时间后10分钟仍显示:
如何动态设置用户cookie的过期值理想情况下只设置一次。
1条答案
按热度按时间nx7onnlm1#
您可以通过
req.sessionOptions
更改特定请求的maxAge
选项表示当前请求的会话选项。这些选项是在中间件构造时提供的内容的浅克隆,可以根据每个请求更改cookie设置行为。
例如
首先访问
http://localhost:3000
,然后访问http://localhost:3000/user/1
,以检查Expires / Max-Age
的更改