2

Express 3.x と connect-mongo と request モジュールを使用しています

私のアプリには、外部リクエストに access_token があることを保証するいくつかのミドルウェアがあります。access_token がチェックされ、いくつかのデータがセッションに保存されます。次に、アプリケーション内の URL への内部呼び出しを行いたいのですが、内部呼び出しは新しいセッションを発行します (ユーザーのブラウザー要求とは別の要求として)。私がやりたいことは、Express 署名付き Cookie を何らかの方法で内部 request() にコピーして、ミドルウェアが元の外部セッション 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');
 }

}
4

1 に答える 1

3

Cookieは単なる別のヘッダーであるため、Cookieを渡したい場合は、次のことができるはずです。

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

request({
       url: 'someurlinside-this-node-app',
       method: "GET",
       headers: { 'Set-Cookie' : cookies}
   }
于 2013-02-25T04:41:17.073 に答える