当前位置: 首页 > news >正文

使用Postman搞定各种接口token实战

现在许多项目都使用jwt来实现用户登录和数据权限,校验过用户的用户名和密码后,会向用户响应一段经过加密的token,在这段token中可能储存了数据权限等,在后期的访问中,需要携带这段token,后台解析这段token才允许用户访问接口。

01 设置Bearer Token

如果后端项目使用的是Bearer Token进行安全认证,那么使用Postman这样操作。

设置你的环境变量

点击右上角的小眼睛,然后点击Add,添加

填写你的环境名和你的变量名

选择你新建的环境

项目集合设置认证方式及环境变量

登录接口的脚本

这个脚本的意思就是说,你的用户名和密码正确的前提下,访问后端接口会给你返回一个Token,你将这个Token储存在刚刚设置好的环境变量中,当你用别的接口访问时,由于整个项目刚刚已经设置好了访问权限使用的Token,所以你所有的接口都会携带这个token去访问,从而数据权限被后台接收和使用

 
  1. // pm代表的就是postman,使用js编写脚本即可

  2. const responseJson = pm.response.json();

  3. console.log('-----------',responseJson)

  4. const accesssToken = responseJson.result

  5. if('200'==responseJson.code){

  6. pm.environment.set('accessToken',accesssToken)

  7. }

02 通过脚本设置Headers

Spring Security的在访问时会向请求头添加一个accessToken,可以使用脚本在集合批量添加,也可以对每一个Api手动添加Header,不过那样会很麻烦,所以我这边用脚本批量添加的方便方式。

登录请求设置环境变量

从登录结果获取accessToken,将accessToken设置到环境变量中

脚本如下

 
  1. const responseJson = pm.response.json();

  2. console.log('-----------',responseJson)

  3. const accesssToken = responseJson.result

  4. if('200'==responseJson.code){

  5. pm.environment.set('accessToken',accesssToken)

  6. }

设置集合的发送请求脚本

点选集合->进入Pre-request Scrip(请求前脚本)页签->编写脚本

脚本如下

 
  1. console.log("----addHeader------", pm.environment.get("accessToken"));

  2. var accessToken = pm.environment.get("accessToken");

  3. // 所有请求在请求前都在请求头中设置accessToken

  4. pm.request.addHeader("accessToken:"+accessToken);

这样设置后,所有的请求都会携带登录的accessToken了。

登录接口抹除accessToken

因为我们项目的过滤器没有设置解析accessToken的脏数据,所以一旦有老的token,就会报错超时,所以登录接口在访问时一定要抹除accessToken,登录接口的Pre-request设置脚本如下:

 
  1. // 移除登录接口的accessToken, 防止过期的token被过滤器解析,影响登录接口

  2. pm.request.headers.remove("accessToken")

 

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取   

http://www.lryc.cn/news/460117.html

相关文章:

  • ssh连接慢的问题或远程连接服务超时
  • 基于卷积神经网络的蔬菜识别系统,resnet50,mobilenet模型【pytorch框架+python源码】
  • 数据结构与算法:栈与队列的高级应用
  • macos php开发环境之macport安装的php扩展安装,php常用扩展安装,port中可用的所有php扩展列表
  • 使用Pytorch+Numpy+Matplotlib实现手写字体分类和图像显示
  • kimi帮我解决ubuntu下软链接文件夹权限不够的问题
  • 如何去除背景音乐保留人声?保留人声,消除杂音
  • 2.4.ReactOS系统提升IRQL级别KfRaiseIrql 函数
  • 【新书】使用 OpenAI API 构建 AI 应用:利用 ChatGPT等构建 10 个 AI 项目(第二版),404页pdf
  • 修改PostgreSQL表中的字段排列顺序
  • canvas实现手写功能
  • Python知识点:基于Python技术,如何使用TensorFlow进行目标检测
  • 初始爬虫13(js逆向)
  • 前端发送了请求头的参数,经debug发现后端请求对象请求头中没有该参数
  • 雷池社区版如何使用静态资源的方式建立站点
  • 车载电源OBC+DC/DC
  • 【朝花夕拾】免费个人网页搭建:免费托管、CDN加速、个人域名、现代化网页模板一网打尽
  • Spring Boot知识管理系统:用户体验设计
  • 《数字信号处理》学习08-围线积分法(留数法)计算z 逆变换
  • vue3中的computed属性
  • C++学习笔记之vector容器
  • LeNet-5(论文复现)
  • 基于SpringBoot+Vue+Uniapp汽车保养系统小程序的设计与实现
  • 【问题实战】Jmeter中jtl格式转换图片后如何分开展示各个性能指标?
  • 解决 MySQL 连接数过多导致的 SQLNonTransientConnectionException 问题
  • 猫头虎分享:什么是 ChatGPT 4o Canvas?
  • qiankun 主项目和子项目都是 vue2,部署在同一台服务器上,nginx 配置
  • 深入浅出MongoDB(七)
  • 【华为】配置NAT访问互联网
  • Spring Boot项目使用多线程执行定时任务