我有一个Express api
,它将请求发送到其他api以获取信息.Token是jwt
,每分钟到期。所以从技术上讲,我必须在每个出站请求的标题中附加新标记。有没有办法在所有出站请求的标头中附加授权令牌。
route.js文件:
'use strict';
router.get('/api/request', function (req, res) {
var Client = require('node-rest-client').Client;
var client = new Client();
client.post("http:/localhost:3000/client", args, function (data, response) {
console.log(response.status);
});
});
server.use(router);
};
这是来自api的其他服务模块之一的样本发布请求。与此类似,还有其他几项要求。我想在标题中添加授权令牌,用于从此api发出的所有请求。
答案 0 :(得分:0)
尝试此操作,为所有API调用创建一个入口点(服务)并在那里进行验证。如果令牌在45秒之前创建,则使用相同的其他值重新生成并使用。
const Client = require('node-rest-client').Client;
const HttpService = (method, url, args) => {
return new Promise((resolve, reject) => {
var client = new Client();
if (method == 'POST') {
client.post(url, args, function (data, response) {
// If err reject(err)
resolve(response);
});
}
// Same for get and other
});
}
let basetoken, tokenExpire = Date.now() + 1000 * 45;
const getToken = async () => {
// Check token is generated before 45 Seconds or not
if (!basetoken || tokenExpire < Date.now()) {
basetoken = await HttpService('POST', 'Token URl', 'SomeData');
tokenExpire = Date.now() + 1000 * 45; // Token validity you can change this to some value
}
return basetoken;
}
const HttpPost = async (url, data) => {
const token = await getToken();
data.headers = {Token : token};
const data = await HttpService('POST', url, data);
return data;
}
module.exports ={ HttpPost }