我用express框架创建了一个nodejs服务器A.我使用request-promise
模块向不同的服务器B发出http请求。浏览器使用cookie数据调用服务器A.此cookie包含我还想传递给服务器B的jwt令牌。
@Get("/users")
getUsers( @Cookie('token') token: any): any {
let usersPromise = Users.getUsers(jwt);
return Promise.all([usersPromise])
.then(response => {
return response.users;
});
}
我创建了一个Users
类,它使用request-promise模块进一步调用服务器B.一种方法是将jwt令牌直接传递给我在
let usersPromise = Users.getUsers(jwt);
有没有其他方法可以采取拦截的方式来做到这一点?
答案 0 :(得分:0)
我有superagent个包拦截我的所有请求并将jwt附加到标题。
配置此
安装superagent
和superagent-use
个模块
npm install superagent superagent-use --save
需要模块
var request = require('superagent-use')(require('superagent'));
然后定义superagent中间件
// interceptor used by superagent to add jwt in header for each request
request.use((req) => {
req.header.jwt = jwt;
return req;
});
然后拨打电话
request
.get(url)
.query({ view: 'jsonView' });
Superagent
比request-promise
更有用,因为此模块提供承诺和 rxjs 基础apis,网址前缀和优雅的方式来附加查询字符串。