Node.js重新整理session過期時間的實現方法

螞蟻小編發表於2017-04-14

在Node.js中,我們通常使用express-session這個包來使用和管理session,儲存服務端和客戶端瀏覽器之間的會話狀態。

那如何才能實現當使用者重新整理當前頁面或者點選頁面上的按鈕時重新重新整理session的過期時間呢,類似於ASP.NET中session會話狀態,只要在一定的時間內頁面一直保持活動狀態,session就不會過期。通過下面的程式碼可以實現這個功能,我們在Node.js的程式碼中加入下面的中介軟體:

[JavaScript] 純文字檢視 複製程式碼
// 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();
});

這樣,每次當有請求過來時,該中介軟體都會重新修改session的過期時間,從而達到預期的效果。

然後,在程式碼中加入對session的使用:

[JavaScript] 純文字檢視 複製程式碼
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的儲存方式。

當然,你也可以使用其它的session儲存方式,例如memoryStore,redis,mongoDB等等,使用方法都大同小異。

相關文章