Postman可通过环境变量隔离+Authorization动态引用+Pre-request自动续期实现多账号权限测试;需为每个账号配置独立环境变量(如auth_token)、在Authorization中使用{{auth_token}}、用脚本自动登录刷新token,并通过Tests断言状态码与响应体内容验证权限。

Postman 本身不支持“多账号并发会话”,但可以通过环境变量 + 鉴权配置 + 请求脚本组合实现不同账号的权限验证,关键在于隔离每个账号的凭证、Token 和 Cookie,避免交叉污染。
用环境变量隔离不同账号的鉴权参数
每个账号对应一个独立环境(如 admin_env、user_env、guest_env),在环境里定义专属变量:
-
auth_token:存 JWT 或 Bearer Token 值,不同环境填不同账号获取到的 token -
username/password:仅用于 Basic Auth 或登录接口请求体,不建议明文存密码,优先用 token -
cookie_str:若接口依赖 Cookie(如 Web 端 Session),把抓包拿到的完整Cookie: key1=val1; key2=val2字符串存为变量,后续在 Headers 中直接引用{{cookie_str}}
注意:pm.environment.get() 只能取当前激活环境的变量,切换环境即切换账号上下文,这是最轻量且可靠的隔离方式。
在 Authorization 标签里正确复用 token 变量
不要手动粘贴 token,否则无法随环境切换自动更新。正确做法是:
- 在请求的
Authorization标签中,Type 选Bearer Token - Token 输入框填
{{auth_token}}(必须带双花括号) - 如果后端要求放在
headers里(比如X-Auth-Token),就删掉 Authorization 标签,改在Headers里加一行:X-Auth-Token → {{auth_token}}
常见错误:token 变量名拼错(如写成 {{auth_toekn}}),或环境未激活导致 {{auth_token}} 渲染为空 —— 此时请求头会变成 Authorization: Bearer ,后端通常返回 401 Unauthorized。
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
用 Pre-request Script 自动刷新 token(可选进阶)
当账号 token 有有效期且需频繁验证权限边界时,靠手动换 token 效率低。可在集合层级的 Pre-request Script 中加逻辑:
if (!pm.environment.get("auth_token") || pm.environment.get("token_expired")) {
// 调用登录接口,提取新 token 并 set 到环境变量
const loginRequest = {
url: pm.environment.get("api_base") + "/login",
method: 'POST',
header: { 'Content-Type': 'application/json' },
body: {
mode: 'raw',
raw: JSON.stringify({
username: pm.environment.get("username"),
password: pm.environment.get("password")
})
}
};
pm.sendRequest(loginRequest, function (err, res) {
if (err) console.log(err);
else {
const jsonData = res.json();
pm.environment.set("auth_token", jsonData.token);
pm.environment.unset("token_expired");
}
});
}
这样每次发请求前自动检查并续期 token,但要注意:该脚本在网页版中受限于跨域和 CORS,若登录接口不在同域下,会失败;桌面版无此限制。
权限验证结果必须靠 Tests 断言显式判断
不能只看响应码是否为 200 —— 很多权限不足的场景后端返回 200 OK 但 body 里是错误提示或空数据。断言要覆盖三类典型响应:
- HTTP 状态码:
pm.response.code === 403(禁止访问)或401(未认证) - 响应体内容:
pm.expect(jsonData.message).to.include("insufficient permissions") - 关键字段缺失:
pm.expect(jsonData).to.not.have.property("data")或pm.expect(jsonData.items).to.be.an('array').that.is.empty
真实项目里最容易被忽略的是「相同接口、不同账号返回结构不一致」—— 比如管理员能看到全量字段,普通用户字段被过滤,此时光比 status code 毫无意义,必须校验 body 内容是否符合权限预期。










