CNode

express 4 中session 过期时间顺延如何解决?

问答
9953133667发布于10 年前最后回复10 年前5 回复7587 浏览0 收藏

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)

W
wangtantan#1·10 年前

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

9
953133667#2·10 年前

没人回复吗? 在线等

W
wangtantan#3·10 年前

resave: true, //更新session

D
duzitengg#4·10 年前

我们公司是用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 过期时间重置 }));

9
953133667#5·10 年前
引用 wangtantanresave:是否允许session重新设置,要保证session有操作的时候必须设置这个属性为true rolling:是否按照原设定的maxAge值重设session同步到cookie中,...

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

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