closures浏览器后保持会话活动 – Node.js +客户端会话

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

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(); }); } }); 

首次发送请求时,会创build一个新的会话并保存在数据库中,并将cookie发送给客户端。 第二次请求,会议仍然活着,它find了身份证。

但是,如果我closures浏览器并再次打开,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) })); 

附加信息 – 我的客户来自不同的域。 我已经添加了CORSfunction:

 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代码中,添加了Credentials:

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