下面小編就為大家?guī)硪黄狽ode.js刷新session過期時(shí)間的實(shí)現(xiàn)方法推薦。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。
在Node.js中,我們通常使用express-session這個(gè)包來使用和管理session,保存服務(wù)端和客戶端瀏覽器之間的會(huì)話狀態(tài)。那如何才能實(shí)現(xiàn)當(dāng)用戶刷新當(dāng)前頁面或者點(diǎn)擊頁面上的按鈕時(shí)重新刷新session的過期時(shí)間呢?類似于ASP.NET中session會(huì)話狀態(tài),只要在一定的時(shí)間內(nèi)頁面一直保持活動(dòng)狀態(tài),session就不會(huì)過期。通過下面的代碼可以實(shí)現(xiàn)這個(gè)功能,我們?cè)贜ode.js的代碼中加入下面的中間件:
// use this middleware to reset cookie expiration time
// when user hit page every time
app.use(function(req, res, next){
req.session._garbage = Date();
req.session.touch();
next();
});
這樣,每次當(dāng)有請(qǐng)求過來時(shí),該中間件都會(huì)重新修改session的過期時(shí)間,從而達(dá)到預(yù)期的效果。
然后,在代碼中加入對(duì)session的使用:
app.use(session({
secret: 'test',
resave: false,
saveUninitialized: true,
cookie:{
maxAge: 1000*60*60 // default session expiration is set to 1 hour
},
store: new MemcachedStore({
hosts: ['127.0.0.1:9000'],
prefix: 'test_'
})
}));
上面的session使用了memcached作為session的存儲(chǔ)方式,有關(guān)如何使用memcached可以參考Github上的這個(gè)地址https://github.com/balor/connect-memcached
當(dāng)然,你也可以使用其它的session存儲(chǔ)方式,例如memoryStore,redis,mongoDB等等,使用方法都大同小異。
以上這篇Node.js刷新session過期時(shí)間的實(shí)現(xiàn)方法推薦就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考