Spring Security:如何在Postman中优雅地测试后端API(前后端分离)
前言
在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(前后端分离)的更多相关文章
- 如何在MyBatis中优雅的使用枚举
问题 在编码过程中,经常会遇到用某个数值来表示某种状态.类型或者阶段的情况,比如有这样一个枚举: public enum ComputerState { OPEN(10), //开启 CLOSE( ...
- 如何在 Swoole 中优雅的实现 MySQL 连接池
如何在 Swoole 中优雅的实现 MySQL 连接池 一.为什么需要连接池 ? 数据库连接池指的是程序和数据库之间保持一定数量的连接不断开, 并且各个请求的连接可以相互复用, 减少重复连接数据库带来 ...
- spring security进阶 使用数据库中的账户和密码认证
目录 spring security 使用数据库中的账户和密码认证 一.原理分析 二.代码实现 1.新建一个javaWeb工程 2.用户认证的实现 3.测试 三.总结 spring security ...
- Spring Security在登录验证中增加额外数据(如验证码)
在使用Spring Security框架过程中,经常会有这样的需求,即在登录验证时,附带增加额外的数据,如验证码.用户类型等.下面将介绍如何实现. 注:我的工程是在Spring Boot框架基础上的, ...
- 如何在Vue中优雅的使用防抖节流
1. 什么是防抖节流 防抖:防止重复点击触发事件 首先啥是抖? 抖就是一哆嗦!原本点一下,现在点了3下!不知道老铁脑子是不是很有画面感!哈哈哈哈哈哈 典型应用就是防止用户多次重复点击请求数据. 代码实 ...
- 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_17-认证接口开发-申请令牌测试
远程 调用Spring Security来申请令牌,然后把申请到令牌存储到redis里面 cookieMaxAge: ‐1 -1表示浏览器一关闭cookie就失效. 测试远程申请令牌 TestCl ...
- 如何在DevOps中实施连续测试
在过去的十年中,对软件开发的需求已急剧发展.软件已成为公司获得竞争优势的关键优势,特别是如果您的公司属于SaaS范畴.通过在SDLC中实施瀑布等传统流程,组织现在正在向敏捷过渡,以便以更快的速度在市场 ...
- Spring Boot+Jpa(MYSQL)做一个登陆注册系统(前后端数据库一站式编程)
Spring Boot最好的学习方法就是实战训练,今天我们用很短的时间启动我们第一个Spring Boot应用,并且连接我们的MySQL数据库. 我将假设读者为几乎零基础,在实战讲解中会渗透Sprin ...
- vue 项目中使用mock假数据实现前后端分离
也是查了很多的资料,整理出来.实现了前后端的分离,用到的技术vue-cli,webpack,node,json-server.首先全局安装json-server cnpm i json-server ...
随机推荐
- vue-cli3 项目中通过 CDN方式 使用 echarts
1.html 中引入 echarts html中添加script标签如下: <script src="//cdn.bootcss.com/echarts ...
- php时间区间,优化显示
<?php /** * 类似微信的时间显示 * 规则是:今天的,显示几秒前,几分钟前,几小时前,昨天的显示昨天 上午 XX:XX * 再往前,本周的,显示周几+时间,再往前,本年的,显示月日+时 ...
- dede后台栏目管理文章统计数量和实际文章数不一致解决办法
操作dede_arctiny表,将和栏目对应的typeid所有文章去掉即可.
- Sentry 监控 - Security Policy 安全策略报告
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- JDBC-2(CRUD)
3.PreparedStatement实现CRUD 3.1 操作和访问数据库 数据库连接被用于向数据库服务器发送命令和SQL语句,接受数据库服务器返回的结果.(一个数据库连接就是也给Socket连接) ...
- lightweight openpose 入门实操笔记(pytorch环境)
最近有个小项目要搞姿态识别,简单调研了一下2D的识别: 基本上是下面几种 (单人)single person 直接关键点回归 heatmap,感觉其实就是把一个点的标签弄成一个高斯分布 (多人)mul ...
- 基于AM3352/AM3354/AM3358/AM3359的Linux 开发环境搭建(上)
遇到不少人新手小白问,前辈如何搭建一个优良的Linux 开发环境?之前一直都是在用win开发,现在想要尝试用Linux做开发等等一系列的问题.开源一直是给电子行业工作者提供了一种向技术更深处进发的机遇 ...
- asp.net core使用identity+jwt保护你的webapi(一)——identity基础配置
前言 用户模块几乎是每个系统必备的基础功能,如果每次开发一个新项目时都要做个用户模块,确实非常无聊.好在asp.net core给我们提供了Identity,使用起来也是比较方便,如果对用户这块需求不 ...
- mysql从零开始之MySQL PHP 语法
MySQL PHP 语法 MySQL 可应用于多种语言,包括 PERL, C, C++, JAVA 和 PHP,在这些语言中,MySQL 在 PHP 的 web 开发中是应用最广泛. 在本教程中我们大 ...
- 工作日常-SQL不能乱写
前言:刚接手别人的项目没多久,在昨天的一次上线中无故躺坑,且该大兄弟已经离职,不得不帮他填坑,整完后,今天想搞一个总结,结论就是:SQL不能乱写. 搜索关键词:Cause: java.sql.SQLE ...