如何在Jmeter中参数化承载令牌授权

时间:2016-09-18 12:26:18

标签: jmeter

我有一个jmeter登录脚本,用户登录并注销。详细的屏幕截图如下。

请求数据已附加The request data content

在响应日期,生成授权令牌

enter image description here

正则表达式如下enter image description here

我将值作为参数传递给55 / users

enter image description here

当我运行脚本时它失败了 enter image description here

这是响应数据

enter image description here

3 个答案:

答案 0 :(得分:4)

使用标头管理器将令牌作为标头传递,这样您就可以:

Header Manager

查看更多详细信息:

https://stackoverflow.com/a/43283700/460802

答案 1 :(得分:3)

JMeter的设置(登录/获取)更加简单:

线程组

  • HTTP请求,正文数据:{“ Login”:“ some”,“ Password”:“ credentials”}

    • HTTP标头管理器:内容类型application / json
    • JSON提取器-创建的变量的名称:令牌; JSON路径表达式:tokenName(在我的情况下为根级别)
  • HTTP请求

    • HTTP标头管理器:content-type-> application / json;授权->承载$ {Token}
    • 响应断言:要测试的字段=响应代码;模式匹配规则=等于,不等于;测试模式401
  • 查看结果树以检查结果

本地 IE Ajax 版本,以防...

<SCRIPT>
var baseUri = 'https://localhost:port';
var tokenUri = '/something';
var getUri = '/restrictedData';
var token;
var form = { "Login":"some", "Password":"credentials" };
postRequest(baseUri + tokenUri, form, gotToken)

function gotToken(progress) {
    var response = progress.srcElement;
    if (response.status != 200) {
        document.body.innerText = "Error:\n" + response.response;
        return;
    }
    token = JSON.parse(response.response);
    console.log(JSON.stringify(token));
    var restricted = getRequest(baseUri + getUri, token.tokenName, gotRestricted);
}
function gotRestricted(progress) {
    var jsonStr = progress.srcElement.response;
    var jsonObj = JSON.parse(jsonStr);
    document.body.innerText = JSON.stringify(token,null,2) + '\n\n' + JSON.stringify(jsonObj,null,2);
}
function getRequest(url, token, callback) {
    var xhr = new XMLHttpRequest();
    xhr.onloadend = callback;
    xhr.open('GET', url);
    xhr.setRequestHeader('contentType', 'application/json')
    if (token) xhr.setRequestHeader("Authorization", "Bearer " + token);
    xhr.send();
    return xhr;
}
function postRequest(url, body, callback) {
    var xhr = new XMLHttpRequest();
    xhr.onloadend = callback;
    xhr.open('POST', url);
    xhr.setRequestHeader('Content-Type', 'application/json')
    xhr.send(JSON.stringify(body));
    return xhr;
}
</SCRIPT>

答案 2 :(得分:0)

使用授权作为参数名称和值应为 承载$ {variable_name}

相关问题