我已经看到很多关于此的问题,但没有一个答案解决了我的问题。我使用express-session
并且我希望用户会话保持活动,只要用户在coookie 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 })
})
);
我的期望是,将rolling
设置为true应该允许我持续保持登录状态,只要我在少于每个MaxAge中点击至少一次。
我还需要做些什么才能让这个工作吗?
resave
设为true,但不会改变我的结果。secure
设置为true而未设置,结果相同(我的网站为https)saveUninitialized
设置为true和false,结果相同。更新
太奇怪了,我每隔15秒就会点击同一页面,并监控Chrome浏览器工具中的connect.sid
Cookie,并且每次请求时都会重置30秒,但不时,它不会# 39;当我提出请求时改变。果然等了15秒,会议结束了,我已经退出了。
我已使用express-session
:https://github.com/expressjs/session/issues/391