2014-03-12 112 views
11

快速Session中可以找到的所有內容都是關於設置cookie的。在SessionStore中設置Node.js快速會話過期時間,而不是在Cookie中

session.cookie.expires = null; // Browser session cookie 
session.cookie.expires = 7 * 24 * 3600 * 1000; // Week long cookie 

但餅乾的到期日不是「保護」你secret,因爲這些是你的瀏覽器管理只是Cookie設置。

如何在會話存儲中設置會話的過期日期?因爲從理論上講,當有人使用你的計算機時,如果服務器端會話沒有與cookie同時過期,他們可以「修復」過期cookie的到期時間並繼續會話。

我無法找到任何有關如何工作或如何設置/更改此。

+0

查看下面的答案,瞭解快速會話超時的真實解決方案 – asdfasdfads

回答

16

使用會話中間件,只有加密的會話ID存儲在客戶端cookie中。過期日期在服務器端存儲中存儲爲req.session.cookie.expires。所以我們可以添加一個自定義中間來檢查當前會話是否過期。

// ... 
app.use(express.cookieParser()); 
app.use(express.session({secret:'yoursecret', cookie:{maxAge:6000}})); 

app.use(function(req, res, next) { 
    // if now() is after `req.session.cookie.expires` 
    // regenerate the session 
    next(); 
}); 

// ... 
+0

請參閱下面的答案,以獲取有關快速會話超時的真實解決方案 – asdfasdfads

相關問題