Node.js刷新session過期時間


  在Node.js中,我們通常使用express-session這個包來使用和管理session,保存服務端和客戶端瀏覽器之間的會話狀態。那如何才能實現當用戶刷新當前頁面或者點擊頁面上的按鈕時重新刷新session的過期時間呢?類似於ASP.NET中session會話狀態,只要在一定的時間內頁面一直保持活動狀態,session就不會過期。通過下面的代碼可以實現這個功能,我們在Node.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();
});

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

  然后,在代碼中加入對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的存儲方式,有關如何使用memcached可以參考Github上的這個地址https://github.com/balor/connect-memcached

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM