问题描述:
1、当前系统通过token实现系统安全验证,登录成功后,token被存储在返回体中(reaponse body),后续服务器请求时,需要将该token添加到请求头部(request header)中;
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解析与认证。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理