Node.js 如何保持expressjs中的会话不过期

Node.js 如何保持expressjs中的会话不过期,node.js,Node.js,我已经使用expressjs框架在nodejs中编写了一个简单的cms。我使用passportjs使用twitter进行身份验证。下面是我的app.configure: app.configure(function(){ //views app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); //parse request bodies app.use(express.bodyParser()); app.us

我已经使用expressjs框架在nodejs中编写了一个简单的cms。我使用passportjs使用twitter进行身份验证。下面是我的app.configure:

app.configure(function(){
//views
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
//parse request bodies
app.use(express.bodyParser());
app.use(express.methodOverride());
// session support
app.use(express.cookieParser(cfg.cookie_secret));
app.use(express.session({
  key : 'whynode',
  store : sessionStore,
  cookie: { 
    expires: new Date(Date.now() + 60 * 10000), 
    maxAge: 60*10000
  }
}));
app.use(passport.initialize());
app.use(passport.session());
//pass user data
app.use(function(req, res, next) {
  res.locals.req_path = req.path;
  res.locals.user = req.user || false;
  next();
});
//get routers
app.use(app.router);
//serve asset files
app.use('/assets', express.static(__dirname + '/public'));
});
我将redis用于会话存储。完整的app.js代码可以在这里查看 我现在经历的是,当我让应用程序闲置几分钟,会话到期,我需要再次登录。我们如何使会话不会超时至少2-3小时不活动?

调整此代码:

这将会话的到期时间设置为10分钟。您不需要同时使用
maxAge
expires
,一个就足够了(区别在于
expires
使用一个日期实例,而
maxAge
只意味着
从现在起的X毫秒后过期
)。

因为您可以将
禁用TTL
设置为
true
。钥匙将保留在redis中,直到通过其他方式收回

var sessionStore = new RedisStore({client: rClinet, disableTTL: true})

maxAge的计时器是在每次使用会话时重置还是仅在创建会话时重置?@Shawn AFAIK仅在创建会话时重置。如果将会话选项设置为“true”,它将在新请求时更新会话超时。
var sessionStore = new RedisStore({client: rClinet, disableTTL: true})