2015-04-17 56 views
0

我正在使用express/node.js創建一個簡單的認證系統,並使用會話進行登錄。在app.js,這裏是我的會話配置代碼:快速會話行爲有所不同:如何防止頁面刷新後會破壞會話?

app.use(session({ 
    secret: 'Viu65Cc5VTU6cu', 
    resave: true, 
    saveUninitialized: true, 
    cookie: { secure: true } 
})); 

據我知道,一旦我設置會話像req.session.session_name應該都正常工作。相反,在成功驗證後,我將用戶的id分配給一個名爲user id的會話。

req.session.user_id = doc.id; 

然後我會希望這個值保持不變,直到我調用destroy函數或關閉瀏覽器。然而,第二個我回應POST請求(在應用程序的不同部分)我console.log會話,看看它是否工作和存在,但我得到「未定義」。無論我在哪裏調用console.log,我都會得到未定義的。會話似乎在頁面刷新後結束,這與會話的重點略有矛盾。 也許配置錯誤?或者,這是表達會議如何表現?

如果您可以提供任何建議,請提前致謝。

P.S當我最初設置會話,我試着console.log後立即值,我得到一個有效的值。之後,它似乎變得不確定。

+0

您使用的是HTTPS嗎? – robertklep

+0

不,它只是一個標準的Ubuntu服務器,安全性很低 –

回答

2

Cookie設置secure : true只有在您通過https訪問您的網站時纔有效,如documented here

否則,會話cookie將不會被設置,這基本上意味着會話不會在頁面請求之間持續存在。

+0

所以我需要將它設置爲false? –

+0

@CasparWylie正確,雖然'false'也可能是默認的(不確定)。 – robertklep

+0

謝謝你的作品! –