前言

  在Postman中可以编写和执行自动化测试,使用 JavaScript 编写基本的 API 测试,自由编写任何用于自动化测试的测试方案。

在POSTMAN中读取Cookie值

  1. 我们需要向“ /doLogin”Web API 发送请求以接收用户详细信息以登入系统,但我们不能直接发送请求。

  2. 我们需要发送一个登录请求(具有有效的凭据)以接收令牌作为 Cookie 值 ,然后将其设置为“环境变量”。

  3. 最后,我们将在请求标头中使用“环境变量” 将授权的请求发送到“/doLogin”Web API。

具体流程

  1. 准备正确的登录表单,即用户名和密码是有效的,发送请求给Spring Security后端应用。此时请求没有带有令牌,后端检查这个请求没有带有令牌token,就会利用 CookieCsrfTokenRepository 来生成并返回一个 Token 放进 Cookie 中并返回给发送请求的 Postman。

  2. 如下面的截图所示,我们收到了名为 'XSRF-TOKEN' 的 Cookie,这是我们的令牌,我们需要以编程方式(使用JavaScript)从 Tests 测试编辑器中读取该令牌并将其设置为 Environment 变量,如以下快照所示:(服务端的 response 的 body 内容是 Spring Security 自动生成的登录表单页面,带有 _csrf 令牌参数,这里就不截图了)

  Postman 不会将 cookie 作为响应标头的一部分来处理,相反,postman从chrome(使用拦截器插件)接收cookie,以读取从响应接收到的cookie,postman向我们提供了以下方法:

postman.getResponseCookie("Cookie-name")

  第1行: token1 被声明为新变量,用于保存 getResponseCookie("XSRF-TOKEN").value 方法中的值以读取 'XSRF-TOKEN' 的 cookie 值。

  第2行:如图所示,'XSRF-TOKEN'  cookie的值在两行中被接收, 这在我们的 cookie 值中添加了一个新行字符“ <br/>”,我们需要摆脱它来接收正确的cookie值,因此我们使用 JavaScript replace函数从字符串中查找换行符,并将其替换为空字符“”。

  第3行:我们使用 Postman 提供的方法来设置 token2 变量,该变量现在包含正确的 cookie 值,并将其设置为名称为 'X-CSRF-TOKEN' 的“环境变量”,我们可以将其用作变量 {{X-CSRF-TOKEN}} 在其他请求中。

  3. 编辑并保存上面的代码后,转到 POSTMAN -> 管理环境 -> Pentest Environment ->编辑并添加 'X-CSRF-TOKEN' 作为变量和 {{X-CSRF-TOKEN}} 作为值(注意上面截图左上角),如下所示:

  4. 转到 "/doLogin" Web API选项卡 -> 单击下面 Header选项 -> 打开并添加 'X-CSRF-TOKEN' 作为变量和 {{X-CSRF-TOKEN}} 作为值,如下所示:

  5. 转到 "/doLogin" Web API,再次发送 Send 请求,脚本将被执行,并且将 'X-CSRF-TOKEN' 设置为环境变量,你将获得响应,并返回数据,就像经过身份验证的请求一样,如下面的截图所示:

参考:参考1

Spring Security:如何在Postman中优雅地测试后端API(前后端分离)的更多相关文章

  1. 如何在MyBatis中优雅的使用枚举

    问题 在编码过程中,经常会遇到用某个数值来表示某种状态.类型或者阶段的情况,比如有这样一个枚举:   public enum ComputerState { OPEN(10), //开启 CLOSE( ...

  2. 如何在 Swoole 中优雅的实现 MySQL 连接池

    如何在 Swoole 中优雅的实现 MySQL 连接池 一.为什么需要连接池 ? 数据库连接池指的是程序和数据库之间保持一定数量的连接不断开, 并且各个请求的连接可以相互复用, 减少重复连接数据库带来 ...

  3. spring security进阶 使用数据库中的账户和密码认证

    目录 spring security 使用数据库中的账户和密码认证 一.原理分析 二.代码实现 1.新建一个javaWeb工程 2.用户认证的实现 3.测试 三.总结 spring security ...

  4. Spring Security在登录验证中增加额外数据(如验证码)

    在使用Spring Security框架过程中,经常会有这样的需求,即在登录验证时,附带增加额外的数据,如验证码.用户类型等.下面将介绍如何实现. 注:我的工程是在Spring Boot框架基础上的, ...

  5. 如何在Vue中优雅的使用防抖节流

    1. 什么是防抖节流 防抖:防止重复点击触发事件 首先啥是抖? 抖就是一哆嗦!原本点一下,现在点了3下!不知道老铁脑子是不是很有画面感!哈哈哈哈哈哈 典型应用就是防止用户多次重复点击请求数据. 代码实 ...

  6. 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_17-认证接口开发-申请令牌测试

    远程 调用Spring Security来申请令牌,然后把申请到令牌存储到redis里面 cookieMaxAge: ‐1   -1表示浏览器一关闭cookie就失效. 测试远程申请令牌 TestCl ...

  7. 如何在DevOps中实施连续测试

    在过去的十年中,对软件开发的需求已急剧发展.软件已成为公司获得竞争优势的关键优势,特别是如果您的公司属于SaaS范畴.通过在SDLC中实施瀑布等传统流程,组织现在正在向敏捷过渡,以便以更快的速度在市场 ...

  8. Spring Boot+Jpa(MYSQL)做一个登陆注册系统(前后端数据库一站式编程)

    Spring Boot最好的学习方法就是实战训练,今天我们用很短的时间启动我们第一个Spring Boot应用,并且连接我们的MySQL数据库. 我将假设读者为几乎零基础,在实战讲解中会渗透Sprin ...

  9. vue 项目中使用mock假数据实现前后端分离

    也是查了很多的资料,整理出来.实现了前后端的分离,用到的技术vue-cli,webpack,node,json-server.首先全局安装json-server cnpm i json-server ...

随机推荐

  1. Java-SpringBoot整合SpringCloud

    SpringBoot整合SpringCloud 1. SpringCloud特点 SpringCloud专注于为典型的用例和扩展机制提供良好的开箱即用体验,以涵盖其他情况: 分布式/版本化配置 服务注 ...

  2. Linux上合理设置网卡的MTU值

    MTU:是网络的最大传输单元,通信术语:最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位).最大传输单元这个 ...

  3. Xshell 为什么会出现中文乱码?

    在网上下载xshell并成功安装了,但是当登录服务器查看中文时却出现了乱码的现象呢?这是怎么回事呢?本集小编就同大家详细讲讲. 图1:使用中文命名文档 现象: 登录服务器查看中文却出现乱码 原因分析: ...

  4. 使用Dockerfile Maven插件

    我们常见开源项目中使用的Docker Maven插件是com.spotify:docker-maven-plugin.可用版本信息见Github. 通过其介绍可知该插件已经不再推荐使用,取而代之的是c ...

  5. k8s标签label

    1.给节点设置标签 一遍pod部署选择 kubectl label node 节点名 disktype=ssd kubectl label node master1 disktype=ssd 效果 [ ...

  6. Java技术开发专题系列之【Guava RateLimiter】针对于限流器的入门到精通(针对于源码分析介绍)

    Guava包中限流实现分析 RateLimiter 之前的文章中已经介绍了常用的限流算法,而google在Java领域中使用Guava包中的限流工具进行服务限流. 回顾使用案例 Google开源工具包 ...

  7. Java基础系列(6)- 注释

    注释 平时我们编写代码,在代码量比较少的时候,我们还可以看懂自己写的,但是当项目结构一旦复杂起来,我们就需要用到注释了 注释不会被执行,是给开发人员看的 书写注释是一个非常好的习惯 Java中的注释有 ...

  8. jenkins+requests+pytest+allure持续集成

    环境搭建参考:https://www.jianshu.com/p/fc39030d057f 总体流程:

  9. 《Android自动化环境搭建》

    一.安装JDK并配置环境变量 1:在Java官网上下载本机系统相对应的jdk文件安装,直接下一步一步到位 2:配置JAVA_HOME 新建 JAVA_HOME 环境变量,变量值是所安装JDK 的路径, ...

  10. django 模版-标签-视图-csrf-token-模版继承-HTML过滤器

    """ ******模版****** --定义模版-- **变量** 视图传递给模版的数据 注意1:要遵守标识符规则 语法:{{var(即变量)}} 如果使用的变量不存在 ...