Apifox自动获取Token的脚步

自动获取Token认证

const accessToken = pm.globals.get('access_token');
const accessTokenExpires = pm.globals.get('access_token_expires');

if (!accessToken || (accessTokenExpires && new Date(accessTokenExpires) <= new Date())) {
  sendLoginRequest();
}

function sendLoginRequest() {
  const baseUrl = pm.environment.get('BASE_URL');
  const username = pm.globals.get('login_user');
  if (!username) {
    pm.globals.set('login_user', 'admin');
    username = pm.globals.get('login_user');
  }
  const password = pm.globals.get('login_password');
  if (!password) {
    pm.globals.set('login_password', '123456');
    username = pm.globals.get('login_password');
  }
  const loginRequest = {
    url: baseUrl + '/auth/login',
    method: 'POST',
    header: {
      "Content-Type": "application/json;charset=UTF-8",
    },
    body: {
      mode: 'raw',
      raw: JSON.stringify({ username: username, password: password }),
    }
  };

  pm.sendRequest(loginRequest, function (err, res) {
    if (err) {
      console.log(err);
    } else {
      const jsonData = res.json();
      pm.globals.set('access_token', jsonData.data.access_token);
      const m = new Date();
      const expires_time = new Date(m.getTime() + 1000 * 60 * jsonData.data.expires_in);
      console.log(jsonData.data.expires_in)
      console.log("有效时间:", expires_time)
      pm.globals.set('access_token_expires', expires_time);
    }
  });
}

接口返回401,重新获取Token

pm.test("Your test name", function () {
  var jsonData = pm.response.json();
  console.log(jsonData.code);
  if(pm.expect(jsonData.code).to.eql(401)){
      sendLoginRequest();
  }
});

function sendLoginRequest() {
    const baseUrl = pm.environment.get('BASE_URL');
    const username = pm.globals.get('login_user');
    if (!username) {
        pm.globals.set('login_user', 'admin');
        username = pm.globals.get('login_user');
    }
    const password = pm.globals.get('login_password');
    if (!password) {
        pm.globals.set('login_password', '123456');
        username = pm.globals.get('login_password');
    }
    const loginRequest = {
        url: baseUrl + '/auth/login',
        method: 'POST',
        header: {
            "Content-Type": "application/json;charset=UTF-8",
        },
        body: {
            mode: 'raw',
            raw: JSON.stringify({ username: username, password: password }),
        }
    };

    pm.sendRequest(loginRequest, function (err, res) {
        if (err) {
            console.log(err);
        } else {
            const jsonData = res.json();
            pm.globals.set('access_token', jsonData.data.access_token);
            const m = new Date();
            const expires_time = new Date(m.getTime() + 1000 * 60 * jsonData.data.expires_in);
            console.log(jsonData.data.expires_in)
            console.log("有效时间:", expires_time)
            pm.globals.set('access_token_expires', expires_time);
        }
    });
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值