为了账号安全,请及时绑定邮箱和手机立即绑定

关于express-session 的一个问题

关于express-session 的一个问题

HUX布斯 2018-09-23 21:28:25
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
查看完整描述

1 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

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

查看完整回答
反对 回复 2018-09-23
  • 1 回答
  • 0 关注
  • 804 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信