我搜索並發現很多類似的問題,會話變量被設置爲undefined,但沒有一個我發現的答案似乎適用。會話變量沒有存儲在node.js中
我有我的路由器文件這一功能:
exports.loginHandler = function(req, res){
username = req.body.username;
password = req.body.password;
readAccount(username, function(acct){
if (acct.password = password){
req.session.username = username;
console.log(username+' logged in'+' pass: '+acct.password);
};
});
res.redirect('/');
};
的console.log執行得很好,雙方的用戶名和acct.password有適當的值。但是,req.session.username最終會被設置爲undefined。
這裏的readAccount功能:
readAccount = function(user, callback){
AM.login(user, function(acct){
callback(acct);
});
};
而這裏的AM.login:
exports.login = function(user, callback){
accounts.findOne({username: user}, function(err, result){
if (err) throw err;
callback(result);
})
}
我猜會話變量不能的條件下進行設置,因爲這種類型的錯誤沒有按」 t似乎不常見。
你真的爲你的應用程序設置了會話狀態存儲嗎? AFAIK它不會出爐。 –
它確實用快遞出爐,或者至少它爲我做了。問題是res.redirect在變量被分配之前正在執行。 – user1816679
啊,好吧,我以某種方式錯過了快遞標籤。 –