LoadRunner 實現token的解析與認證
阿新 • • 發佈:2020-12-29
問題描述:
1、當前系統通過token實現系統安全驗證,登入成功後,token被儲存在返回體中(reaponse body),後續伺服器請求時,需要將該token新增到請求頭部(request header)中;
2、當前web服務訪問時,強制限制必須適應谷歌瀏覽器;
3、Lr錄製指令碼時,需要通過代理的方式錄製,但錄製結果回放時,總是提示錯誤:
Error -26630: HTTP Status-Code=401 (Unauthorized) for ***;
##解決辦法:
1、開啟錄製的指令碼,預設為指令碼[Script]模式,需要切換到樹[Tree]檢視;
2、在左側列表彙總找到系統登入請求[login]步驟,在右側找到[Response Body]步驟,返回資料為json格式,如下:
{
“code” : 200,
“message” : “操作成功”,
“name”:admin,
“token”:“3E78453A8B17F3A4EBA1B19D7F4D22D4-NKifP2w4mhXI9vl1YZynupr”
}
3、選擇[token]的值域內容,右鍵選擇[Create Parameter];切換到[Script]檢視,看到如下Lr新增內容:
//Correlation comment - Do not change!Original value='3E78453A8B17F3A4EBA1B19D7F4D22D4-NKifP2w4mhXI9vl1YZynupr' Name ='CorrelationParameter_1' // Lr自動新增的引數解析演算法 web_reg_save_param_ex( "ParamName=CorrelationParameter_1", "LB=\"", "RB=\",", SEARCH_FILTERS, "Scope=Body", "RequestUrl=*/login*", LAST); // 修訂[token]解析演算法: // 按照預設Lr解析[token]的演算法,無法獲取到真正的token,需要修訂如下: web_reg_save_param_ex( "ParamName=my_token", // 修改引數名,便於記憶 "LB=\"token\":\"", // 修改 token 值解析演算法 "RB=\",", SEARCH_FILTERS, "Scope=Body", "RequestUrl=*/login*", LAST); // 登入模組-此部分為Lr自動生成部分,不需要修改; web_custom_request("login", "URL=http://192.168.0.1:8080/test/login", "Method=POST", "Resource=0", "RecContentType=application/json", "Referer=http://192.168.0.1:8080/test/index.html", "Snapshot=t6.inf", "Mode=HTML", "EncType=application/json", "Body={\"userName\":\"admin\",\"password\":\"123456\"}", LAST); // 新增:將解析出的 token 自動新增在每一個後續請求的頭部(request header): web_add_auto_header("Authorization", "{my_token}"); // 後續的web請求,自動新增token認證: web_url(***); web_submit_data(***); //Correlation comment - Do not change!Original value='3E78453A8B17F3A4EBA1B19D7F4D22D4-NKifP2w4mhXI9vl1YZynupr' Name ='CorrelationParameter_1'
// Lr自動新增的引數解析演算法
web_reg_save_param_ex(
"ParamName=CorrelationParameter_1",
"LB=\"",
"RB=\",",
SEARCH_FILTERS,
"Scope=Body",
"RequestUrl=*/login*",
LAST);
// 修訂[token]解析演算法:
// 按照預設Lr解析[token]的演算法,無法獲取到真正的token,需要修訂如下:
web_reg_save_param_ex(
"ParamName=my_token", // 修改引數名,便於記憶
"LB=\"token\":\"", // 修改 token 值解析演算法
"RB=\",",
SEARCH_FILTERS,
"Scope=Body",
"RequestUrl=*/login*",
LAST);
// 登入模組-此部分為Lr自動生成部分,不需要修改;
web_custom_request("login",
"URL=http://192.168.0.1:8080/test/login",
"Method=POST",
"Resource=0",
"RecContentType=application/json",
"Referer=http://192.168.0.1:8080/test/index.html",
"Snapshot=t6.inf",
"Mode=HTML",
"EncType=application/json",
"Body={\"userName\":\"admin\",\"password\":\"123456\"}",
LAST);
// 新增:將解析出的 token 自動新增在每一個後續請求的頭部(request header):
web_add_auto_header("Authorization", "{my_token}");
// 後續的web請求,自動新增token認證:
web_url(***);
web_submit_data(***);
至此完成token解析與認證。