关于express-session 的一个问题

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


HUX布斯
浏览 812回答 1
1回答

慕桂英4014372

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

相关分类

Node.js