我的Web服务使用基于JWT的授权承载令牌身份验证:
/v1/auth/signIn
发送有效的POST(包括用户名+密码信息)来自curl
的回复:
HTTP/1.1 200 OK
Date: Tue, 04 Sep 2018 01:18:28 GMT
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Access-Control-Expose-Headers: Authorization
Authorization: Bearer <big_huge_string>
Content-Length: 0
Authorization
,其值为“Bearer <xyz>
”(其中<xyz>
)是在上面的登录呼叫中返回的<big_huge_string>
。非常基本的标准JWT东西。我正在尝试编写一个Postman集合,该集合以“登录请求”开头,该登录请求成功登录并从服务获取JWT令牌,然后在每个后续调用中添加相应的HTTP请求标头。关于我如何可以的任何想法:
<big_huge_string>
?然后<big_huge_string>
保存为变量并将其作为所有后续调用的HTTP请求标头注入?提前致谢!
试过这个建议:
越来越近了,但是console.log(...)
没有给Postman打印任何东西(或者至少我不知道在哪里寻找它)。我应该提到我没有使用Postman的Chrome应用程序版本,而是使用独立应用程序/可执行文件(版本6.1.4):
任何想法如何/在哪里我可以让console.log(...)
工作?我担心只是将测试更改为:
pm.test("Can Extract JWT", function() {
var authHeader = pm.response.headers.toObject().Authorization;
pm.expect(authHeader).to.not.be.equal(null);
pm.globals.set('token', authHeader)
});
没有先看到authHeader
甚至是什么。有任何想法吗?!
获得该Token值后,您可以使用{{token}}
语法在每个请求标头中引用它。它在Auth标题中的标志是更难的部分。
您可以使用pm.response.headers
获取Headers列表,然后提取出您需要的值。
这是作为列表返回的,因此可能使用Lodash之类的东西或将其转换为对象可以帮助您获得所需的值。它会像pm.response.headers.toObject().Authorization
- 我没有尝试过,所以我的语法可能有些错误。
您可以将Headers记录到Postman控制台并将其缩小到 - 只需将其包装在Console.log()
语句中即可。
当你获得这个价值时,它只是一个基本的pm.globals.set('token, pm.response.headers.toObject().Authorization)
来保存全球。