当我设置req.session.whatever时,客户端没有获取connect.sid

时间:2016-05-29 01:17:53

标签: node.js session express cookies

我不知道什么是错的,但是当你使用快速会话时,显然会做这样的事情:

module.exports = function(app){
app.get('/',function(req,res){
    var username = req.session.username ||'';
    res.render('index',{username:username});
});
app.post('/sign-up',function(req,res){
    users_controller.signUp(req,res);
    res.redirect('/');
})
app.post('/log-in',function(req,res){
    users_controller.logIn(req,res);
    res.redirect('/');
})};

和users_controller.logIn函数

exports.logIn = function(req,res){
User.findOne({email:req.body.email}).exec(function(err,user){
    if(!user){
        err = 'User Not Found';
    } else if (user.hashed_password===hashPW(req.body.password.toString())){
        req.session.user = user.id;
        req.session.username = user.username;
        req.session.msg = "success authenticated as " + user.username; 
        console.log(req.session);
    }else{
        err = "Wrong Password";
    }
    if(err){
        req.session.regenerate(function(){
            req.session.msg = err;
        });
    }
});

当我在我的app.post('/ log-in',回调)中直接设置req.session.whatever时,一切正常。但是当我使用另一个文件所需的logIn函数时。仍然,您可以记录req.session.whatever,但客户端没有从响应头获取set-cookie。 我真的很乱。

1 个答案:

答案 0 :(得分:0)

好的,我愚蠢......

这是一个异步的事情。 它重定向到主页,没有完成设置req.session.whatever。