Express中的子域中的会话

时间:2012-08-07 17:20:52

标签: node.js express subdomain session-cookies vhosts

我在Express with Node中使用vhost功能来管理我的应用的多个子域。该应用程序使用相同的会话密钥和密钥,我相信我已经使用了正确的会话cookie设置:

cookie: {
          path     : '/',
          domain   : '.example.com',
          httpOnly : false,
          maxAge   : 1000*60*60*24*30*12    //one year(ish)
        }

我在我的常规网站上设置了一个会话变量,其中子域未定义,例如http://example.com喜欢这样:

req.session.rep_id = rep._id;
res.redirect('https://' + company.name + '.example.com/');

但是当我将它们重定向到subdomain.example.com时,会话没有将rep_id键设置为任何内容。似乎会话正在子域之间重置。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

一些想法:

尝试从.example.com中删除句点。我的想法是,你正在尝试设置一个只有子域的cookie,同时仍然在根域。我已经读过example.com上设置的Cookie也可以在所有子域中使用。

尝试不立即将用户重定向到子域,首先验证cookie是否在您的根域上运行。检查服务器的响应标头,然后查看您的浏览器是否在下一个请求中保留了cookie。只有当您确定这是正常工作时,才能导航到子域。

答案 1 :(得分:0)

使用.save()方法,回调将确保已设置cookie,然后重定向类似-

req.session.rep_id = rep._id;
    req.session.save(()=>{
      res.redirect('https://' + company.name + '.example.com/');
    })