我有两个快速应用程序,我想将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);
}
});
}));
似乎我的令牌正在传递中,但是我不太确定为什么它没有调用我的策略,我认为是因为甚至没有找到该令牌。