2011-12-11 64 views
1

無法訪問s req.session variable。我將req.session.username設置爲someVariable,但我得到了未定義的 。以下Express安裝程序是否允許我訪問每個路徑中的req.session變量?Express.js req.session變量不通過不同路由存儲會話變量

app = express.createServer(
    express.logger(), 
    express.cookieParser(), 
    express.session({ secret: 'keyboard cat' }) 
    ) 

快遞網站似乎用這種方式。

編輯:

下面是一些其他的代碼我使用:

if(result[0] != undefined && result[0].Password == req.body.user.pass){ 
    console.log("login successfull"); 

    //Setting in the cookies some variable useful later 
    req.session.userAuthenticated = true; 
    req.session.username = result[0].Username; 
    req.session.projects = result[0].Projects; 

這是/login路線的一部分。在這一部分中,我檢查用戶是否正確輸入了密碼並且他是否已註冊。如果我做了console.log(req.session.username)我得到登錄用戶的正確的用戶名。

在另一個路線,稱之爲/wathever我做一次檢查一個數據庫檢索這樣

if(projects[i].name == projectName && projects[i].username == req.session.username){ 

projectName後是我收到的東西POST從用戶,它的工作原理,它有正確的內容,但如果我檢查req.session.username我收到undefined。這似乎會話變量不包含什麼,我把裏面的以前路線...

感謝

+0

你可能在你的路線上做錯了什麼,但不在那裏。你能粘貼更多的代碼嗎? – alessioalex

+0

完成,抱歉沒有從頭開始。 – Masiar

+0

我有同樣的問題,你能告訴我什麼是問題? – Hadesara

回答

1

確保result[0].Username & & result[0].Projects不是不確定的。

另外你的代碼還有其他問題,你不檢查是否req.body.userreq.body.user.pass未定義。例如,我可以使用params「test = ok」向您的站點發出發布請求,所以如果沒有這些變量,它會向我顯示一個內部錯誤頁面。

+0

對於第一點我確定他們不是:)。我檢查他們......雖然第二點,你是對的,但它仍然不能真正解決問題...謝謝無論如何:) – Masiar

+0

我只能猜測是什麼問題,我需要整個代碼才能看到你做錯了什麼(因爲我沒有看到這些小代碼片段中顯示的真正問題)。 – alessioalex