首页 > 其他分享 >apifox 自动登录示例 前置操作 模拟登录

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

时间:2022-12-07 22:35:51浏览次数:44  
标签:ACCESS const 登录 示例 environment TOKEN apifox pm

 

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

 

标签:ACCESS,const,登录,示例,environment,TOKEN,apifox,pm
From: https://www.cnblogs.com/CyLee/p/16964739.html

相关文章

  • 009.完整实现登录功能
    1.修改UserService.javapackagecom.imooc.oa.service;importcom.imooc.oa.entity.User;importcom.imooc.oa.mapper.UserMapper;importcom.imooc.oa.service.exce......
  • ensp防火墙web界面登录
    今日分享ensp防火墙web界面登录1、进入防火墙;user:admin password:Admin@1232、进入管理接口;修改默认IP及网段;3、进入cloud;添加VMware8和udp类型为GE接口,4、cloud端口......
  • smail基本语法示例
    准备工作工欲善其事必先利其器,所以要学好smail语法,好的工具是必须的,这里推荐两个工具,一个是Smali2Java,也就是将smail文件转换成java的工具;另一个工具是J2S2J1.3,这个工具可......
  • Java中的Runnable、Callable、Future、FutureTask的区别与示例
    Java中存在Runnable、Callable、Future、FutureTask这几个与线程相关的类或者接口,在Java中也是比较重要的几个概念,我们通过下面的简单示例来了解一下它们的作用于区别。Ru......
  • 隧道代理怎么用啊?隧道代理GO语言代码示例
    经常做数据采集的人对隧道代理肯定不陌生,但对于新手小白而言,有可能还是属于未涉及的领域,今天就来看看隧道代理(动态请求)利用GO语言要如何写代码。普通模式packagemainimport......
  • c#中EntityFramework连接MySql数据示例 支持Update部分字段
    c#程序如果要连接数据库,以前使用的是ADO.Net,通过DataSet、DataTable、ExecuteNoQuery等方法完成,现在微软提供EntityFramework(其实已经提供很久了)组件实现。今天的主题就是......
  • <三>function函数对象类型的应用示例
    std::function是一组函数对象包装类的模板,实现了一个泛型的回调机制。function与函数指针比较相似,优点在于它允许用户在目标的实现上拥有更大的弹性,即目标既可以是普通函数......
  • ECharts3D地图(详细示例——附有具体注释)
    ECharts3D地图(详细示例——附有具体注释)3D地图图表效果如下:代码:<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>铜仁市3D地图(点......
  • 【每天一个java设计模式(完)】 - 四万字实现23种设计模式(附示例源码)
    什么是设计模式:​​【每天一个java设计模式(零)】-设计模式基本概念及七大设计原则​​创建型模式工厂模式:​​【每天一个java设计模式(一)】-工厂模式​​抽象工厂模式:......
  • 花一块钱登录使用openAI
    1打开网址,注册登录https://sms-activate.org/cn(因为印度的便宜)2充值3再次搜索openai,选择印度(因为便宜)再到注册页面去,使用购买的手机号去注册4到购买的网址上......