Rest Assured接口测试复用登录响应token失败,后续请求报401未授权如何解决
问题根因与解决建议
核心错误点
- 认证参数位置错误:你当前通过
queryParam传递Authorization参数,JWT认证接口通常要求将凭证放在HTTP请求头中,而非URL查询参数 - 认证格式不完整:标准JWT认证请求头需要携带
Bearer前缀,不能直接拼接原始token字符串 - 多余认证信息干扰:更新用户请求中保留了登录接口用的Basic Auth配置,该接口使用JWT认证,不需要额外的Basic Auth,可能会导致服务端认证逻辑冲突
修复后的代码示例
JSONObject childJSONSub = new JSONObject(); childJSONSub.put("email", "user@yahoo.com"); childJSONSub.put("bio", "My New Bio"); childJSONSub.put("image", "https://i.sstatic.net/sad3.jpg"); JSONObject requestSub = new JSONObject(); requestSub.put("user", childJSONSub); given(). header("Content-Type", "application/json") // 改为请求头传递,补充Bearer前缀 .header("Authorization", "Bearer " + token) .body(requestSub) .when() .put("https://BASEuri.com/api/user") .then() .log().all();
补充排查方案
如果修改后仍报相同错误,可以按以下步骤排查:
- 在
given()后追加.log().all()打印完整请求信息,确认Authorization头是否正确传递、token值是否正常 - 校验登录接口提取的token是否完整,避免提取时多带了引号、空格等多余字符
- 若接口文档有特殊要求,可替换前缀
Bearer为Token或其他指定前缀
内容的提问来源于stack exchange,提问作者PiTu
相关产品推荐
相关产品推荐

