使用npm请求传递auth标头以表达应用程序

时间:2019-02-06 21:43:15

标签: node.js express http-headers jwt npm-request

我有两个快速应用程序,我想将auth标头从第一个转发到第二个。这纯粹是对其他事物的测试,但仍然如此。

我已经阅读了请求文档,并且发现可以在请求中包括auth标头的选项,但是使用护照jwt时似乎无法正确访问标头。

这是我的要求

options = {
  baseUrl : serviceURL,
  form: {'':''},
  headers: {Authorization: ''}
};

这是我创建的用于测试的示例路由。除了基本知识,我已删除所有内容。

router.get('/auth/test', (req, res) => {
  options.headers.Authorization = req.headers.authorization;
  request.get(req.path, options, (error, response, body) => {
    res.send(body);
  });
});

这是请求正在调用的第二个应用程序上req.headers的输出。

{ 
  authorization: 'Bearer <token>',
  host: '10.0.1.236:8081',
  'content-type': 'application/x-www-form-urlencoded',
  'content-length': '1',
  connection: 'close' 
}

然后这部分只是有些相关,但这是我的passport-jwt策略:

var opts = {};
// opts.jwtFromRequest = ExtractJWT.fromAuthHeaderAsBearerToken(); //Tried this one but it didn't work
opts.jwtFromRequest = ExtractJWT.fromAuthHeaderWithScheme('Bearer');
opts.secretOrKey = config.passport.jwtSecret;
opts.issuer = config.passport.issuer;
opts.audience = config.passport.audience;
passport.use('jwt', new JwtStrategy(opts, function(jwt_payload, done) {
  console.log('payload received: ', jwt_payload);
    User.findOneById({id: jwt_payload.sub}, function(err, user) {
      console.log('User: ', user);
      console.log('Error: ', err);
      if (user) {
        console.log(user);
        return done(null, user);
      }
      if (err) {
        return done(err, false);
      }
    });
}));

似乎我的令牌正在传递中,但是我不太确定为什么它没有调用我的策略,我认为是因为甚至没有找到该令牌。

0 个答案:

没有答案