我们使用Node + Express + Passport进行身份验证,并将会话信息保存到Redis.我在会话cookie上设置了maxAge,在一小时内超时.这一切似乎都运行正常,但问题是,无论用户的活动如何,会话cookie都将在一小时后到期.
有没有办法可以手动刷新/保持会话cookie?
您可能希望在会话中使用"滚动"选项.这"强制在每个响应上设置cookie"并"重置过期日期".您希望将滚动设置为true.
还要注意"重新保存"选项.即使未经修改也会"强制会话保存......"您可能也希望将该选项设置为true.请注意,即使此选项的默认值为true,也应该显式设置该值.现在不推荐使用此选项的默认值,而不是显式设置它.
尝试类似的东西:
app.use( session( { secret: 'keyboard cat', cookie: { maxAge: 60000 }, rolling: true, resave: true, saveUninitialized: false } ) );
这是文档.查看"选项"和"options.resave":https://github.com/expressjs/session.
是的你可以!如果cookie在请求中未更改,则不会重新发送给浏览器,您可以在cookie下检查开发人员工具以验证.因此,包括我自己喜欢做的一些事情就是根据请求更改cookie,其中存在应该扩展会话的用户活动.类似于以下内容:
req.session.lastAccess = new Date().getTime();
我见过但我遇到麻烦的另一件事是使用Session#touch:
req.session.touch()