如何通过邮递员中的环境变量设置基本授权?

时间:2019-07-04 08:51:42

标签: postman postman-pre-request-script

我想使用环境变量在Postman中设置基本授权。因为我为不同的API调用使用了不同的授权用户名和密码。

我按照以下步骤设置邮递员:

在“授权”标签中:我选择了“无身份验证”
在标题标签中:键= {Authorization值= Basic{{MyAuthorization}}
在“正文”标签中:

{
    "UserName": "{{UserName}}",
    "ServiceUrl": "{{ServiceUrl}}"
}

//which set it from the envitonment variable

在“预请求”标签中:

// Require the crypto-js module
var CryptoJS = require("crypto-js");

// Parse the `username` and `password` environment variables
let credsParsed = CryptoJS.enc.Utf8.parse(`${pm.environment.get('admin')}:${pm.environment.get('admin')}`);

// Base64 encoded the parsed value
let credsEncoded = CryptoJS.enc.Base64.stringify(credsParsed);

// Set the valuse as an environment variable and use in the request
pm.environment.set('MyAuthorization', credsEncoded);
console.log(credsEncoded);

在“测试”标签中:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("LoginInfoID", jsonData.First.LoginInfoID);

然后,我发送了请求,并遭到了未经授权的操作。

之后,我将身份验证类型设置为具有用户名和密码的基本身份验证 一切正常,我从响应中得到了想要的东西。

2 个答案:

答案 0 :(得分:12)

对我有用的另一种方法:

  1. 为“用户名”和“密码”设置环境变量,然后保存
  2. 在请求的“授权”标签中,选择“基本身份验证”
  3. 在“用户名”字段中,输入{{username}}
  4. 在“密码”字段中,单击“显示密码” ,然后输入{{password}}

希望这对其他人有帮助:)

答案 1 :(得分:1)

可以cryptp-js中使用Pre-request Script,并使用非常简单的解决方案,例如:

// Require the crypto-js module
var CryptoJS = require("crypto-js");

// Parse the `username` and `password` environment variables
let credsParsed = CryptoJS.enc.Utf8.parse(`${pm.environment.get('username')}:${pm.environment.get('password')}`);

// Base64 encoded the parsed value
let credsEncoded = CryptoJS.enc.Base64.stringify(credsParsed);

// Set the valuse as an environment variable and use in the request
pm.environment.set('authCreds', credsEncoded);

您可以在密钥environmentusername下将凭据添加到一组不同的password文件中。

在请求中,只需像这样设置Header

Postman

您还可以在“收集/子文件夹”级别进行设置,这样您就不必在每个请求中都重复自己的操作。

这是您可以实现的一种方法,但是还有其他方法。