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最后的值。
- 1 回答
- 0 关注
- 804 浏览
添加回答
举报
0/150
提交
取消