2015-09-26 71 views
1

我正在使用快速會話來管理會話。我正在使用這個:Express JS - 重置cookie過期時間

app.use(session({secret: 'secret', 
        resave: false, 
        saveUninitialized: false, 
        cookie: { maxAge: 6*1000 
          } 
        }) 
      ); 

現在我想每次我的網址被重置時,將過期值重置爲6。所以我這樣做:

req.session.cookie.maxAge = 6000 

但最大年齡不復位和會話在6秒內始終到期,即使URL被擊中。我怎樣才能每次把它改成6000?

感謝您的幫助提前

+1

嘗試req.session.cookie.expires =新日期(Date.now()+ 6000);我還沒有嘗試過。 – Molda

+0

不,不起作用... – Srikrishnan

+0

那麼奇怪,我剛剛嘗試過它,它按預期工作。每次刷新頁面時,Cookie的過期值都會更新。 – Molda

回答

2

你必須使用一箇中間件,我的代碼是很簡單,但對我來說

app.use(function(req,res,next){ 
    req.session._garbage = Date(); 
    req.session.touch(); 
    next() 
}) 

工作正常,我把這些代碼在app.js和偉大工程,爲我

這是我的會話代碼:

app.use(session({ 
    cookie: { 
    maxAge: 14400000 
    }, 
    saveUninitialized: true, 
    resave: true, 
    secret: config.sessionSecret, 
    store: new RedisStore({ 
    port: 6379 
    }) 
})); 
+0

謝謝,這解決了我的問題,順便說一句'req.session._garbage'是什麼? –

0

請檢查這個例子可能會有幫助您

更新你這樣的代碼

req.session._garbage = Date(); 
req.session.touch(); 
req.session.cookie.expires = 2592000000; // 30*24*60*60*1000 Rememeber 'me' for 30 days 

供您參考,請檢查波紋管的例子

app.use(session({ 
    secret: 'iloveyoudear...', 
    resave: true, 
    saveUninitialized: true, 
    cookie: {expires: 30*24*60*60*1000 } 
})); 

OR

app.use(session({ 
    secret: 'iloveyoudear...', 
    resave: true, 
    saveUninitialized: true, 
    cookie: {maxAge: 30*24*60*60*1000 } 
})); 

上面的兩個例子不能正常工作,請單獨設置像這樣在你的路由器

req.session.cookie.maxAge = 2592000000; // 30*24*60*60*1000 Rememeber 'me' for 30 days 

這一個也不能正常工作,請檢查您的

快遞會話和cookie的解析器NPM版本,並安裝最新版本

所有例子爲我工作,請看一個波紋管快照。

enter image description here