共计 1789 个字符,预计需要花费 5 分钟才能阅读完成。
背景痛点
在 API 测试和开发中,Token 管理是一个常见但容易被忽视的环节。手动管理 Token 会带来以下问题:

- 重复配置:每个 API 请求都需要单独添加 Token,效率低下
- 维护困难:Token 变更时需要逐个修改请求
- 安全隐患:Token 可能被硬编码在请求中,存在泄露风险
- 协作障碍:团队成员之间 Token 不一致导致测试结果差异
技术方案对比
Apifox 提供了多种 Token 管理方式,各有优劣:
- 环境变量
- 优点:配置简单,全局可用
-
缺点:静态存储,无法自动更新
-
预请求脚本
- 优点:动态生成 Token,支持自动刷新
-
缺点:需要编写少量代码
-
手动添加
- 优点:直观可见
- 缺点:前面提到的所有问题
核心实现
1. 环境变量设置
首先创建一个专门存放 Token 的环境变量:
- 打开 Apifox,进入 ” 环境管理 ”
- 点击 ” 新建环境 ”,命名为 ” 生产环境 ”
- 添加变量:
AUTH_TOKEN,值为空(稍后通过脚本填充)
2. 预请求脚本编写
在 ” 预请求脚本 ” 标签页添加以下代码:
// 获取当前环境变量
const env = pm.environment.get('currentEnvironment');
// 模拟获取 Token 的 API 请求(实际项目中替换为真实接口)const getTokenRequest = {
url: 'https://api.example.com/auth',
method: 'POST',
header: {'Content-Type': 'application/json'},
body: {
mode: 'raw',
raw: JSON.stringify({
username: 'your_username',
password: 'your_password'
})
}
};
// 发送请求获取 Token
pm.sendRequest(getTokenRequest, (err, response) => {if (err) {console.error('获取 Token 失败:', err);
return;
}
// 解析响应中的 Token
const {access_token, expires_in} = response.json();
// 设置环境变量
pm.environment.set('AUTH_TOKEN', access_token);
// 设置 Token 过期时间(提前 5 分钟刷新)const expiresAt = new Date();
expiresAt.setSeconds(expiresAt.getSeconds() + expires_in - 300);
pm.environment.set('TOKEN_EXPIRES_AT', expiresAt.toISOString());
});
3. Token 自动更新机制
修改预请求脚本,添加 Token 过期检查:
// 检查 Token 是否过期
const expiresAt = new Date(pm.environment.get('TOKEN_EXPIRES_AT') || 0);
const now = new Date();
if (!pm.environment.get('AUTH_TOKEN') || now >= expiresAt) {
// 调用上面的获取 Token 逻辑
fetchAndSetToken();}
安全考量
- 存储安全
- 不要将 Token 硬编码在脚本中
-
使用环境变量而非全局变量存储敏感信息
-
传输安全
- 确保认证接口使用 HTTPS
-
避免在 URL 中传递 Token
-
访问控制
- 为不同环境设置不同权限的 Token
- 定期轮换 Token
避坑指南
- 变量未生效
- 检查是否选择了正确的环境
-
确保变量名拼写一致(区分大小写)
-
Token 过期不刷新
- 确认
TOKEN_EXPIRES_AT设置正确 -
检查系统时间是否准确
-
脚本执行失败
- 查看控制台日志定位问题
-
确保网络请求参数正确
-
团队协作不同步
- 将环境配置导出共享
-
使用 Apifox 团队协作功能
-
敏感信息泄露
- 不要将含 Token 的环境配置提交到版本库
- 使用
.env文件管理本地环境变量
进阶建议
- 团队协作方案
- 创建团队共享环境
-
设置不同成员的角色和权限
-
多环境管理
- 为开发、测试、生产环境配置不同的 Token
-
使用环境切换快速测试不同场景
-
监控和告警
- 添加 Token 失效通知
- 记录 Token 使用日志
思考题
如何实现 Token 过期自动刷新?可以考虑以下方向:
- 利用 Apifox 的定时任务功能定期刷新 Token
- 在预请求脚本中添加更智能的过期判断逻辑
- 结合 OAuth2.0 的 refresh_token 机制
正文完
