express 4 中session 过期时间顺延如何解决?
发布于 3 年前 作者 953133667 4838 次浏览 来自 问答

app.js 中 ,session的 配置如下:

··· app.use(session({ secret: ‘ilue igauto’, cookie: {maxAge: 1800000}, //设置maxAge是1800000ms,即30分钟后session和相应的cookie失效过期 resave: false, saveUninitialized: false, })); ··· 现在的问题是,即使有用户在不停的操作,就是在浏览页面,session 到了30分钟还是会过期。我希望实现的是,如果用户在操作页面,session的过期时间应该是顺延30分钟的,而不是过期。请填过坑的小伙伴指点该如何配置,谢谢

5 回复

没人回复吗? 在线等

resave: true, //更新session

我们公司是用redis解决的 1,首先新建一个config.js

var conf = {};

conf.port = ‘3000’;

conf.redis = { host: ‘127.0.0.1’, db: 2, port: 6379, passwd: ‘’ };

conf.mongoUrl = ‘mongodb://…’;//mongodb库地址

module.exports = conf;

2,再app.js里插入下面代码 var conf = require(’./config/config’); //cookie 过期时间30分钟 app.use(session({ resave: true, // 即使 session 没有被修改,也保存 session 值,默认为 true saveUninitialized: true, store: new RedisStore({host: conf.redis.host, port: conf.redis.port, db: conf.redis.db, pass: conf.redis.passwd}), secret: ‘ad_ads’, name: ‘ads.sid’, cookie: {maxAge: 1800 * 1000}, rolling: true //add 刷新页面 session 过期时间重置 }));

resave:是否允许session重新设置,要保证session有操作的时候必须设置这个属性为true rolling:是否按照原设定的maxAge值重设session同步到cookie中,要保证session有操作的时候必须设置这个属性为true saveUninitialized:是否设置session在存储容器中可以给修改

session过期30分钟,没有人操作时候session 30分钟后过期,如果有人操作,每次以当前时间为起点,使用原设定的maxAge重设session过期时间到30分钟只有这种业务场景必须同行设置resave rolling为true.同时saveUninitialized要设置为false允许修改。 from:http://www.cnblogs.com/xiashan17/p/5897282.html

@wangtantan 谢谢你的帮助 我按照这篇文章进行了配置,可是依然无法更新session,附上session配置:

app.use(session({
    secret: 'ilue igauto',
    cookie: {maxAge: 1800000},  //设置maxAge是1800000ms,即30分钟后session和相应的cookie失效过期
    rolling: true,
    resave:true,
    saveUninitialized: false
}));
回到顶部