快速会话滚动不起作用

Dan*_*nce 8 session node.js express express-session

我看到了很多与此相关的问题,但没有一个答案能解决我的问题。我正在使用express-session,并且只要用户在 cookie MaxAge 过期之前发出请求,我希望用户会话保持活动状态,因此我使用该rolling选项。为了进行测试,我将 MaxAge 过期时间设置为 30 秒。

如果我在两次单击之间仅浏览几秒钟,则会话似乎保持活动状态。但是,如果我发出请求然后等待 20 秒,会话就会过期并且我会被注销,即使我在 30 秒之内。

这是我的express-session配置方式:

var express = require('express')
, cookieParser = require('cookie-parser')
, session = require('express-session');

var app = express();
app.use(cookieParser(EXPRESS_SECRET));
app.use(
    session({
        cookie: { maxAge : 30000 },     //in milliseconds. 30 seconds for testing
        resave: false,                  //Save the session to store even if it hasn't changed
        rolling: true,                  //Reset the cookie Max-Age on every request
        saveUninitialized: false,       //Don't create a session for anonymous users
        secret: EXPRESS_SECRET,
        store: new MongoStore({ mongooseConnection: mongooseConnection })
    })
);
Run Code Online (Sandbox Code Playgroud)

我的期望是,设置rolling为 true 应该允许我持续保持登录状态,只要我在每个 MaxAge 中至少单击一次即可。

我还需要做其他事情才能使其正常工作吗?

  • 这篇文章建议设置resave为 true 但它并没有改变我的结果。
  • 这篇文章建议将 httpOnly 设置为 false,但对我来说没有任何改变
  • 我尝试将secure两者设置为 true 和不设置,结果相同(我的网站是 https)
  • 我尝试设置saveUninitialized为 true 和 false,结果相同。
  • 快递:4.12.1
  • 快速会话:1.10.3
  • cookie 解析器:1.3.5

更新:

太奇怪了,我每 15 秒就会访问同一个页面,并connect.sid在 Chrome 浏览器工具中监视 cookie,它通常会在每次请求时重置 30 秒,但时不时地,当我发出请求时它不会改变。果然,又等了 15 秒,会话就过期了,我就退出了。

我记录了一个问题express-session: https: //github.com/expressjs/session/issues/391