zl程序教程

您现在的位置是:首页 >  其他

当前栏目

apifox 自动登录示例 前置操作 模拟登录

模拟自动 操作 示例 登录 前置
2023-09-11 14:16:38 时间

 

// 第一步:点击「根目录 - 前置操作」
// 第二步,环境变量中设置 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 })
}