文章目录
- [1. 接口鉴权通用解决方案](#1. 接口鉴权通用解决方案)
- [2. 后端接口鉴权常用方法](#2. 后端接口鉴权常用方法)
- [3. 各种鉴权方式介绍](#3. 各种鉴权方式介绍)
-
- cookie鉴权
- [token 鉴权](#token 鉴权)
- [auth - 了解](#auth - 了解)
- 总结
✨✨✨学习的道路很枯燥,希望我们能并肩走下来!
编程真是一件很奇妙的东西。你只是浅尝辄止,那么只会觉得枯燥乏味,像对待任务似的应付它。但你如果深入探索,就会发现其中的奇妙,了解许多所不知道的原理。知识的力量让你沉醉,甘愿深陷其中并发现宝藏。

本文开始
1. 接口鉴权通用解决方案
- 接口认证信息获取
- 发现接口请求进行认证信息的携带
2. 后端接口鉴权常用方法
cookie
- 1.携带身份信息请求认证
- 2.之后的每次请求都携带cookie信息,cookie记录在请求头中
token
- 1.携带身份信息请求认证
- 2.之后的每次请求都携带token认证信息
- 3.可能记录在请求头,可能记录在url参数中
auth - 了解
- 每次请求携带用户的username和password,并对其信息加密
oauth2 - 微信小程序鉴权
- 1.携带身份信息请求认证
- 2.服务端向指定回调地址回传code
- 3.通过code获取token
- 4.之后的请求信息都携带token。
典型产品 :微信自动化测试
3. 各种鉴权方式介绍
cookie鉴权
- cookie 的获取(根据接口文档获取)
- 发送携带 cookie 的请求
2.1直接通过调用 cookie 方法
2.2通过在 filter 中添加 cookieFilter 对象
使用cookieFilter方法:
1.创建CookieFilter对象
2.在获取cookie或添加cookie的地方使用
也就是在请求头中使用filter()方法,传递参数是-cookieFilter对象
如:given().filter(CookieFilter对象)
方式一:直接通过.cookie()方法获取
前提:已有对应cookie鉴权信息,请求头中指定cookie需要存放的信息即可
java
@Test
void addCookie() {
given()
//可以使用字符串 或 键值对(第一个key, 第二个是value)
.cookie("user", "ad")
.when()
.get("https://httpbin.org/cookies")
.then()
.log().all();
}
方式二:使用CookieFilter对象,given()中的filter()方法-REST-assure自带方法
【注】
一般是不知道cookie需要存放的鉴权信息是什么
需要模拟正常set-cookie过程,获取cookie需要存放的信息
禁止重定向方法: .redirects().follow(false) -默认follow()方法中为true,代表允许重定向;
java
@Test
void addCookieByFile() {
//1.创建CookieFilter对象
CookieFilter cookieFilter = new CookieFilter();
//第一次请求获取cookie, 不进行重定向
given()
//禁止重定向,默认为true
.redirects().follow(false)
//使用filter()方法,获取set-cookie信息
.filter(cookieFilter)
.when()
//请求带有set-cookie返回的接口
.get(setUrl)
.then()
.log().all();
//第二次请求,携带cookie,会通过cookieFilter 自动添加相应cookie
given()
//使用filter()方法,添加cookie信息
.filter(cookieFilter)
.when()
.get(url)
.then()
.log().all();
//第3次请求,携带cookie,使用cookieFilter自动添加,还可以手动cookie()方法继续添加
given()
//使用filter()方法,添加cookie信息
.filter(cookieFilter).cookie("test", "2")
.when()
.get(url)
.then()
.log().all();
}
token 鉴权
操作步骤:
1.token获取-根据接口文档获取
如:登录接口,请求后会响应会返回token信息
2.发送携带token的请求-根据接口文档获取
【注】发送带token的请求,需要注意token处理逻辑,也就是token放在那,请求头还是url中,工作中问后端或前端进一步了解。(或者看接口文档中是否有说明)
java
@Test
void tokenTest() {
//1.获取token ->请求有token的接口
String bodyData = "{\"username\":\"zs\",\"password\":\"123\",\"code\":\"\"}";
String token = given()
.contentType("application/json;charset=UTF-8")
.body(bodyData)
.when()
.post("https://litemall.com/admin/auth/login")
.then()
.log().all().extract().path("data.token");
//2.再次请求其他接口,携带token
//因为其他接口需要在登录后,才能访问,需要token
given()
.headers("x-litemall-admin-token", token)
.when()
.get("https://litemall.com/admin/goods/list")
.then()
.log().all()
.statusCode(200);
}
auth - 了解
目前公司使用的不多
- 在基本 HTTP 身份验证中,请求包含格式为 的标头字段Authorization: Basic
- 其中credentials是 ID 和密码的Base64编码,由单个冒号连接:。
一般请求头中显示:
authorization: Basic credentials
java
@Test
void addAuth() {
RestAssured.proxy = host("localhost").withPort(8889);
RestAssured.useRelaxedHTTPSValidation();
String authUrl = "需要被测的接口地址";
given()
//在given()通过.auth().basic("用户名","密码")
.auth().basic("user", "ad")
.when()
.get(authUrl)
.then()
.log().all();
}
总结
✨✨✨各位读友,本篇分享到内容是否更好的帮助你理解,如果对你有帮助给个👍赞鼓励一下吧!!
🎉🎉🎉世上没有绝望的处境,只有对处境绝望的人。
🎉🎉🎉一遇挫折就灰心丧气的人,永远是个失败者。而一向努力奋斗,坚韧不拔的人会走向成功。
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!
