Automation 如何在Postman中自动发送先前请求中收集的JWT令牌

Automation 如何在Postman中自动发送先前请求中收集的JWT令牌,automation,jwt,postman,Automation,Jwt,Postman,我正在创建RESTAPI(Symfony 4,FOS REST捆绑包),为了进行测试,我正在使用Postman应用程序。问题是,在登录请求时,我得到JWT令牌,之后,在每一个其他请求中,我都必须将其作为授权头的一部分传递回,作为承载令牌。由于每次登录时该令牌都会发生变化,因此每次登录后(当令牌过期时),我必须手动复制/粘贴令牌值 能否以某种方式避免这种情况并自动完成?首先,在成功授权后-登录调用返回JWT令牌,它必须存储到某个变量中。编辑登录请求时,有一个“测试”选项卡。 在这里,我们可以放置在

我正在创建RESTAPI(Symfony 4,FOS REST捆绑包),为了进行测试,我正在使用Postman应用程序。问题是,在登录请求时,我得到JWT令牌,之后,在每一个其他请求中,我都必须将其作为授权头的一部分传递回,作为承载令牌。由于每次登录时该令牌都会发生变化,因此每次登录后(当令牌过期时),我必须手动复制/粘贴令牌值


能否以某种方式避免这种情况并自动完成?

首先,在成功授权后-登录调用返回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)
我们正在收集响应并将“token”值存储到名为“jwttoken”的全局变量中

如果使用较旧版本的Postman,则此代码的外观应该有所不同-存储变量的外观应该如下所示:

postman.setEnvironmentVariable("jwt-token", jsonData.token); 
(在上面的示例中,这里存储为环境变量和全局变量-这两种类型都应该工作。使用您需要的)

现在,将存储令牌值。然后我们必须将其用于其他请求。 编辑必须通过JWT令牌的所有其他请求。转到“授权”选项卡,选择“承载令牌”授权类型,对于值,只需输入{{jwt Token}

同样,如果您使用的是旧版本的Postman,并且没有“承载令牌”类型,请转到“Headers”选项卡,添加带有键“Authorization”的新头,并为其值集承载{{jwt Token}

就这样。现在您只需执行一次登录请求,JWT令牌将自动用于所有其他请求

如果您遇到一些问题,您可以使用控制台打印调试信息。添加您的代码,即:

console.log(jsonData.token);

从主菜单进入查看显示邮递员控制台打开控制台窗口,在那里你可以得到Console.log输出。

你也可以做
pm.globals.set(“jwt-token”,pm.response.json().token)
来保存变量。