关闭浏览器 - Node.js + client-sessions后保持会话活动

时间:2016-10-13 14:29:32

标签: node.js session session-cookies

我在node.js中设置了以下会话管理器代码

app.use(function(req, res, next) {  
  if (req.session && req.session.id) {
    DB.FindUser(req.session.id, function(err, id) {
      if (err) throw err;
      if (id) {
        res.setHeader('X-Seen-You', 'true');
        next();
      }else{
        res.json({code : 100, status : false, msg :"Error in connection database"});
      }      
    });
  } else {    
    DB.AddUser({ sessionId: Helper.GUID(), ip: req.headers.origin}, function(err, id){
      if(id){
        req.session.id = id;
        res.setHeader('X-Seen-You', 'false');
      }
      next();
    });
  }
});

首次发送请求时,会创建一个新会话并保存在数据库中并将cookie发送给客户端。 第二次请求,会话仍然存在并且找到了id。

但是,如果我关闭浏览器并再次打开,则不会从客户端发送cookie。

如何确保Cookie仍然存在。我对此并不太了解。我认为持续时间足以确保cookie保持活力。

app.use(sessions({
  cookieName: 'session',
  secret: Helper.GUID(),
  duration: 30 * 24 * 60 * 60 * 1000, //(1 month)
  activeDuration: 30 * 24 * 60 * 60 * 1000 //(1 month)
}));

其他信息 - 我的客户来自不同的域。我添加了CORS功能:

app.use(function (req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', 'http://127.0.0.1:8000');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
    res.setHeader('Access-Control-Allow-Credentials', true);
    next();
});

在我的angularJS代码中添加了问题:

clinetApp.config([
    '$httpProvider',
    function($httpProvider) {
        $httpProvider.defaults.withCredentials = true;
    }
]);

0 个答案:

没有答案