如何保持NodeJS Passport会话

 蜗牛的家 发布于 2023-02-12 18:56

我们使用Node + Express + Passport进行身份验证,并将会话信息保存到Redis.我在会话cookie上设置了maxAge,在一小时内超时.这一切似乎都运行正常,但问题是,无论用户的活动如何,会话cookie都将在一小时后到期.

有没有办法可以手动刷新/保持会话cookie?

2 个回答
  • 您可能希望在会话中使用"滚动"选项.这"强制在每个响应上设置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.

    2023-02-12 18:58 回答
  • 是的你可以!如果cookie在请求中未更改,则不会重新发送给浏览器,您可以在cookie下检查开发人员工具以验证.因此,包括我自己喜欢做的​​一些事情就是根据请求更改cookie,其中存在应该扩展会话的用户活动.类似于以下内容:

    req.session.lastAccess = new Date().getTime();

    我见过但我遇到麻烦的另一件事是使用Session#touch:

    req.session.touch()

    2023-02-12 19:01 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有