nodejs复制内部应用程序请求的cookie

时间:2013-02-25 01:40:44

标签: node.js session express

我正在使用Express 3.x和connect-mongo以及请求模块

我的应用程序有一些中间件可确保外部请求具有access_token。 检查access_token并将一些数据存储在会话中。 然后,我想对应用程序内的url进行内部调用,但内部调用会被发出一个新会话(因为它是来自用户浏览器请求的单独请求)。 我想要做的是以某种方式将Express签名的cookie复制到内部请求()中,以便中间件根据原始外部会话ID执行操作。 我已经尝试将cookie jar传递给请求对象,但它似乎不能很好地支持签名的cookie。我有什么想法可以做到这一点吗?

/* Middleware to check access tokens */
app.all("/*", requireAuth, function(req, res, next) {
  next(); 
});

function requireAuth(req,res,next) {

if ( req.query.access_token && !req.session ) {

   // Check the access token and popualte stuff in the session
   req.session.somedata = 'test';

   // Then call a url internall to do something

   // My issue is that this INTERNAL request below gets a new session Id
   // so it itself returns Not Authorised as its hits the same code

   request({
       url: 'someurlinside-this-node-app',
       method: "GET"
   }, function _callback(err, serviceres, body) {
       next();
   });

 }else{
     res.send('Not Authorised');
 }

}

1 个答案:

答案 0 :(得分:1)

Cookie只是另一个标题,所以如果你想传递它,你应该可以这样做:

var cookies = req.header('Set-Cookie');

request({
       url: 'someurlinside-this-node-app',
       method: "GET",
       headers: { 'Set-Cookie' : cookies}
   }