关于express-session 的一个问题

发布于 2022-09-07 21:54:49 字数 605 浏览 11 评论 0

express-session 中的resave 的属性的作用是什么呢官方文档这样直译过来


:强制session保存到session store中。即使在请求中这个session没有被修改。但是这个并不一定是必须的,如果客户端有

     两个并行的请求到你的客户端,一个请求对session的修改可能被另外一个请求覆盖掉,即使第二个请求并没有修改sesion。 
     默认是true,但是默认值已经过时,因此以后default可能会被修改。因此好好研究你的需求选择一个最适用的。大多数情况下你可能需要false 
    最好的知道你的store是否需要设置resave的方法是通过查看你的store是否实现了touch方法(删除那些空闲的session。同时这个方法也会通知session store指定的session          是活动态的),如果实现了那么你可以用resave:false,如果没有实现touch方法,同时你的store对保存的session设置了一个过期的时间,那么建议你用resave:true 



我的理解是 某个客户端有两个请求,第一个请求修改了session第二个没有修改,会将第一个修改的session覆盖掉从而结果就是没有修改session

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

云朵有点甜 2022-09-14 21:54:49

并发请求会导致的session不一致,因为设置了resave选项为true后(默认为true),默认在你每次调用res.send方法发送响应的时候会执行一次req.session.save,所以不管这两个请求修没修改session,最后默认存储session的store里的值会是最后执行res.send方法也就是响应最慢的那个请求中session最后的值。

参考链接

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文