我正在创建REST API(Symfony 4,FOS Rest捆绑包),并且为了进行测试,我正在使用Postman应用程序。问题是,在登录请求时,我得到了JWT令牌,随后,在其他所有请求中,我都必须将其作为承载者令牌作为Authorization标头的一部分传递回去。而且由于每次登录都会更改此令牌,因此我必须在每次登录后(令牌过期时)手动复制/粘贴令牌值。
可以避免这种情况并自动完成吗?
答案 0 :(得分:2)
首先,在成功授权后-登录调用返回了JWT令牌,必须将其存储到某个变量中。编辑登录请求时,有一个“测试”选项卡。 在这里,我们可以放置将在执行请求后执行的JavaScript代码,因此我们将在此处输入如下代码:
var jsonData = JSON.parse(responseBody);
if(jsonData.token) {
pm.globals.set("jwt-token", jsonData.token);
}
或更短的版本,如@Danny Dainton建议的那样:
pm.globals.set("jwt-token", pm.response.json().token)
我们正在收集响应并将“令牌”值存储到称为“ jwt-token”的全局变量中。
如果您使用的是Postman的旧版本,则此代码应该看起来有些不同-存储变量应类似于:
postman.setEnvironmentVariable("jwt-token", jsonData.token);
(在上面的示例中,将其存储为环境变量与全局变量-两种类型都应该起作用。请使用所需的变量。)
因此,现在将存储令牌值。然后,我们必须将其与其他请求一起使用。 编辑所有必须传递JWT令牌的其他请求。转到“授权”标签,选择“承载者令牌”授权类型,然后输入 {{jwt-token}} 作为值。
同样,如果您使用的是Postman的较早版本,并且没有“ Bearer Token”类型,请转至“ Headers”标签,并使用键“ Authorization”添加新标题,并为其设置值 Bearer {{ jwt-token}}
就是这样。现在您只需执行一次登录请求,JWT令牌将自动在所有其他请求中使用。
如果遇到问题,可以使用控制台打印调试信息。添加您的代码,即:
console.log(jsonData.token);
然后从主菜单转到查看->显示Postman控制台,打开控制台窗口,您将在其中获得console.log输出。