LoadRunner 实现token的解析与认证

发表于:2021-2-02 09:40  作者:筱_铭   来源:博客园

字体: | 上一篇 | 下一篇 |我要投稿 | 推荐标签: 性能测试工具 LoadRunner

  问题描述:
  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解析与认证。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理

评 论

论坛新帖



建议使用IE 6.0以上浏览器,800×600以上分辨率,法律顾问:上海信义律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2022, 沪ICP备05003035号
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪公网安备 31010102002173号

51Testing官方微信

51Testing官方微博

扫一扫 测试知识全知道