我正在创建REST (Symfony 4,FOS Rest包),为了测试,我使用了Postman应用程序。问题是,在登录请求时,我得到了JWT令牌,而在以后的每一个请求中,我都必须将它作为授权头的一部分,作为Bearer令牌传递回来。而且,由于每个登录名都会更改此令牌,所以每次登录后(令牌过期时),我必须手动复制/粘贴令牌值。
这能避免,并自动完成吗?
发布于 2019-02-22 10:14:15
首先,成功的授权登录调用返回了JWT令牌,它必须存储在某个变量中。当编辑登录请求时,有一个“测试”选项卡。在这里,我们可以将执行请求后执行的JavaScript代码放入其中,因此我们将输入如下代码:
var jsonData = JSON.parse(responseBody);
if(jsonData.token) {
pm.globals.set("jwt-token", jsonData.token);
}
或者,更短的版本,就像丹尼·戴顿建议的那样:
pm.globals.set("jwt-token", pm.response.json().token)
我们收集响应并将“令牌”值存储到称为“jwt”的全局变量中。
如果您使用较早版本的Postman,则这段代码应该看起来有点不同--存储变量应该如下所示:
postman.setEnvironmentVariable("jwt-token", jsonData.token);
(在上面的例子中,将环境变量与全局变量进行存储-这两种类型都应该可以工作。使用你所需要的)。
因此,现在将存储令牌值。然后我们必须在其他请求中使用它。编辑必须传递JWT令牌的所有其他请求。转到“授权”选项卡,选择"Bearer“授权类型,对于值,只需输入{jwt}。
同样,如果您使用的是较旧版本的邮递员,而没有"Bearer“类型转到”header“选项卡,则添加带有”授权“键的新标头,并将其值设置为Bearer {{jwt}。
就这样。现在,您只需执行一次登录请求,JWT令牌将自动用于所有其他请求。
如果您面临一些问题,您可以使用控制台打印调试信息。添加代码,即:
console.log(jsonData.token);
从主菜单转到View -> Show 打开控制台窗口,在那里您将获得console.log输出。
https://stackoverflow.com/questions/54824469
复制相似问题