// 第一步:点击「根目录 - 前置操作」
// 第二步,环境变量中设置 LOGIN_USERNAME 和 LOGIN_PASSWORD
// 第三步:必须让后端忽略验证码之类的验证
// 定义发送登录接口请求方法
// 官方教程:https://www.apifox.cn/help/app/best-practices/auth/#公共脚本示例
// 如何设置 headers: https://www.apifox.cn/help/app/scripts/examples/request-handle/#header-参数
function sendLoginRequest() {
// 获取环境里的 前置URL
const baseUrl = pm.environment.get('BASE_URL')
// 登录用户名,这里从环境变量 LOGIN_USERNAME 获取,也可以写死(但是不建议)
const username = pm.environment.get('LOGIN_USERNAME')
// 登录用户名,这里从环境变量 LOGIN_PASSWORD 获取,也可以写死(但是不建议)
const password = pm.environment.get('LOGIN_PASSWORD')
// 构造一个 POST x-www-form-urlencoded 格式请求。这里需要改成你们实际登录接口的请求参数。
const loginRequest = {
url: baseUrl + '/admin/login',
method: 'POST',
body: {
mode: 'formdata', // 此处为 formdata
// 此处为 formdata
formdata: [
{ key: 'userAccount', value: username },
{ key: 'userPwd', value: password },
{ key: 'authCode', value: '1234' }
]
}
}
pm.sendRequest(loginRequest, function (err, res) {
if (err) {
console.log(err)
} else {
// 读取接口返回的 json 数据。
const jsonData = res.json()
//token 50分钟后过期
const beijingtimeExpires = new Date(new Date().getTime() + 8 * 60 * 60 * 1000 + 1 * 50 * 60 * 1000)
const token = 'Bearer ' + jsonData.user.tokenId
const userAgent = jsonData.user.userAgent
//设置token
pm.environment.set('ACCESS_TOKEN_EXPIRES', beijingtimeExpires)
pm.environment.set('ACCESS_TOKEN', token)
pm.environment.set('User-Agent', userAgent)
pm.request.headers.upsert({ key: 'Authorization', token })
pm.request.headers.upsert({ key: 'User-Agent', value: userAgent })
// 继续请求原来的接口
pm.sendRequest(pm.request, function (err, res) {
if (err) {
console.log(err)
} else {
console.log(res)
}
})
}
})
}
// 获取环境变量里的 ACCESS_TOKEN
const accessToken = pm.environment.get('ACCESS_TOKEN')
const userAgent = pm.environment.get('User-Agent')
// 获取环境变量里的 ACCESS_TOKEN_EXPIRES
const accessTokenExpires = pm.environment.get('ACCESS_TOKEN_EXPIRES')
// 如 ACCESS_TOKEN 没有值,或 ACCESS_TOKEN_EXPIRES 已过期,则执行发送登录接口请求
if (!accessToken || (accessTokenExpires && new Date(accessTokenExpires) <= new Date(new Date().getTime() + 8 * 60 * 60 * 1000))) {
sendLoginRequest()
} else {
pm.request.headers.upsert({ key: 'Authorization', value: accessToken })
pm.request.headers.upsert({ key: 'User-Agent', value: userAgent })
}