2013-10-10 62 views
2

我似乎無法找到一種方法來防止Express/Connect創建會話,直到我有一個有效的用戶登錄。如何避免會話,直到在快速登錄內

當使用DB-Backed Session Storage並從非瀏覽器調用REST服務時,問題尤其突出,因爲在這種情況下,連接會話對象將爲每個請求創建一個新的會話,我當然要防止。

但是,無論何時用戶通過身份驗證,我確實需要會話,因爲我使用Passport.js進行身份驗證,需要會話以及我確實需要從發送的cookie信息加載會話數據。

看着連接會話代碼的來源,它似乎總是創建一個新的會話,如果沒有從客戶端發送沒有任何選項,以防止它..?

感謝 亞歷

回答

1

如果你可以輕鬆地識別在查詢時調用的API,你可以做這樣的事情:

app.use(function(req, res, next){ 
    if (req.path.indexOf("/api") == 0) return next(); 
    else return express.session()(req, res, next); 
}); 

這樣的會話中間件只包括如果請求URL沒有按不符合某些條件。儘管我還沒有嘗試過這種方式,所以您可能需要考慮在函數外初始化express.session(),並確保沒有任何其他影響。