zoukankan      html  css  js  c++  java
  • express-session 选项 resave, rolling, saveUninitialized

    express-session 的三个 resave, rolling, saveUninitialized option 的解释

    option.resave

    默认值为 true, 但也需要显示设置为 true, 因为 express 后期可能会修改默认值为 其它的值. 不然 express-session 会报一个警告.

    作用: 强制每次都将 session 保存回 session store,即使在请求期间从未修改 session。取决于你的 store 这可能是必要的,
    但它也可以创建竞态条件,客户让两个并行请求您的服务器,在一个请求中更改 session 可能会覆盖另一个请求结束时,即使它没有改变(这种行为也取决于您使用的 store)

    option.rolling

    默认值为 false, 但也需要显示设置, 因为 express 后期可能会修改默认值为 其它的值. 不然 express-session 会报一个警告.
    作用: 当设置为 为 true 时, response 上会添加 header Set-Cookie, 每次重新设置过期时间为 maxAge (自动续命),
    重新设置 session cookie,假设你的 cookie 是10分钟过期,每次请求都会再设置10分钟.

    场景:

    比方说我上午登录的淘宝,中午下班我去吃饭了,中午回来之后刷新网页,登录显示超时,需要重新登录。但是假如我比较敬业中午不吃饭了,一直在刷淘宝,午饭时间已经过了,其他同事纷纷回来了,但是这时我的淘宝并没有退出,一直是登录状态,中间不需要重新登录,这是为什么呢?
    
    总结这个场景发现两种情况:
    
    1、登陆淘宝后,一段时间未刷新网页,会自动退出
    
    2、登陆淘宝后,一直在浏览淘宝信息,一直刷新,跳转网页,就不会退出。
    
    为什么会出现上面两种情况呢?
    
    相信有部分同学已经猜到了,session设置一般有个过期时间,在express-session中是通过maxAge来设置。
    
    时间到期之后,session会被自动删除,需要重新登录,比方说淘宝设置session保存1小时,我从登录开始,一小时后,session会被删除,但是现实是如果我一直在浏览淘宝的页面,一小时后并不会删除,而是一小时之内我不去刷新淘宝页面就会将session删除。
    
    为什么会这样呢?这是因为,session的计时设置是根据:用户最后一次请求开始计算,这就需要用户每次请求都需要修改session的保存时间。
    
    那在express中如何设置呢?将express-session的rolling的值设置为ture即可,这个值默认为false,需要手动开启
    

    option.saveUninitialized

    默认值为 true, 但也需要显示设置为 true, 因为 express 后期可能会修改默认值为 其它的值. 不然 express-session 会报一个警告.

    作用: 当为 true 用户不论是否登录网站,只要访问网站都会生成一个 session,只不过这个 session 是一个空的 session,
    无论有没有 session cookie,每次请求都设置个 session cookie ,默认给个标示为 connect.sid

    参考

    express-session

    express-session中的resave和saveUninitialized

    express session的填坑

  • 相关阅读:
    wikioi 1002 旁路
    OS X升级到10.10使用后pod故障解决方案出现
    Python challenge 3
    maven 编
    独立博客网站FansUnion.cn操作2多年的经验和教训以及未来计划
    Wakelock API详解
    智遥工作流——会签与多人审批区别
    mysql 参数optimizer_switch
    OpenRisc-31-关于在设计具有DMA功能的ipcore时的虚实地址转换问题的分析与解决
    TROUBLE SHOOTING: FRM-30425
  • 原文地址:https://www.cnblogs.com/taohuaya/p/15069138.html
Copyright © 2011-2022 走看看