当前位置: 首页 > news >正文

{“msg“:“请求访问:/xxx-api/xxx/xxx/list,认证失败,无法访问系统资源“,“code“:401}

钉钉小程序对接若依后台时,访问报错如下,即可开始后续开发流程:

{"msg":"请求访问:/xxx-api/xxx/xxx/list,认证失败,无法访问系统资源","code":401}

浏览器返回code:401 认证失败,说明两点:

  1. 网络完全通了:地址、端口、上下文/xxx-api全部正确,后端能收到请求并返回校验结果;
  2. 工单接口需要携带Authorization: Bearer token请求头,浏览器直接访问没带 token,所以 401;小程序现在的问题是免登流程没拿到有效 token,根本没走到工单请求

一、401 含义与流程梳理

完整执行链路:

  1. 小程序打开 → 调用dd.getAuthCode获取钉钉授权码
  2. 请求/xxx-api/xxx/xxx/login提交 authCode,后端返回 token
  3. 把 token 存入缓存,再携带Authorization头部请求/smz/work/list你现在浏览器直接访问工单接口没带 token,必然 401;小程序卡在第 1/2 步免登环节,没拿到 token,不会发起工单请求,后端看不到工单接口日志。

二、模拟器核心坑(最主要原因)

钉钉开发者工具模拟器中,dd.getAuthCode无法获取有效 authCode,会直接进入 fail 回调,Promise 不会 resolve,后续工单请求永远不执行。

解决:必须用手机真机扫码预览调试

  1. 右上角点「预览」生成二维码;
  2. 手机连接你电脑同 WiFi(192.168.x.*),钉钉扫码打开小程序;
  3. 真机环境才能正常拿到 authCode、请求登录接口、生成 token,再拉取工单。

三、检查免登接口逻辑(utils/login.js)

1. 免登接口地址核对

url: "http://192.168.x.xxx:xxxx/dev-xxx/xxx/xxx/login"

浏览器访问这个地址测试:http://192.168.x.xx:xxxx/dev-xxx/xxx/xxx/loginPOST 方式传{authCode: "随便字符串"},正常会返回登录失败 / 有效 token,不会 401(登录接口放行,不需要 token)。

2. 补全异常捕获,定位卡死位置

修改login.js,增加 fail 捕获:

export function getRuoyiToken() { return new Promise((resolve,reject) => { dd.getAuthCode({ success: async (res) => { const authCode = res.authCode; dd.httpRequest({ url: "http://192.168.x.xx:xxxx/dev-xxx/xxx/xxx/login", method: "POST", data: { authCode }, success: (loginRes) => { const data = loginRes.data; if(data.code === 200){ dd.setStorageSync("ruoyi_token", data.token); resolve(data.token); }else{ reject("钉钉登录校验失败:" + data.msg); } }, fail:(err)=>{ reject("请求登录接口网络失败:"+JSON.stringify(err)); } }) }, fail:(err)=>{ // 模拟器一定会进这里,拿不到authCode reject("获取钉钉授权码失败:"+JSON.stringify(err)); } }) }) }

3. workList.js 增加弹窗打印,看阻塞在哪

async initLogin(){ dd.showModal({content:"开始执行免登流程"}); try{ const token = await getRuoyiToken(); dd.showModal({content:"获取token成功:"+token}); this.setData({token}); this.getWorkData(true); }catch(e){ dd.showModal({content:"免登失败原因:"+e}); } }

真机打开后会弹窗提示:

  • 提示「获取钉钉授权码失败」:模拟器限制,真机可解决;
  • 提示「钉钉登录校验失败」:钉钉 AppKey/AppSecret 配置错误,后端校验不通过;
  • 打印出 token 字符串:免登成功,后端会收到工单请求。

四、工单请求头确认(拿到 token 后才会携带)

workList.js里工单请求 header 是正确的:

header:{Authorization:"Bearer "+this.data.token}

只有免登成功赋值 token 后,这个 header 才会带上,否则为空,访问工单接口直接 401。

五、分步操作流程

  1. 确认后端application-dev.yml已添加address:0.0.0.0,服务重启完成;
  2. 开发者工具勾选全部 3 条忽略域名校验,编译项目;
  3. 手机连本机同 WiFi,点右上角「预览」扫码真机打开;
  4. 观察弹窗提示,定位免登失败原因;
  5. 若弹窗打印出 token,后端控制台会收到/smz/work/list请求,页面加载工单数据。

注意

浏览器直接访问工单接口没有携带登录 token,401 是正常安全拦截,不代表地址错误,只证明接口鉴权生效;真正的问题是小程序没走完登录拿 token 流程。

http://www.cnnetsun.cn/news/3986940.html

相关文章:

  • Verilog仿真与调试实战:从语法陷阱到跨时钟域处理
  • 从整蛊脚本到实用工具:VBS、BAT、HTML/JS脚本的自动化原理与改造
  • Unity WebGL UI视频播放全攻略:从原理到实战避坑指南
  • 建设网站目录对于SEO优化的深远影响以及如何在2024年高效构建高质量网站目录以获取流量红利
  • 揭秘四川超宇建设集团网站背后的匠心传承与真实口碑解析
  • Java AI Agent框架选型:LangChain4j、Spring AI Alibaba与自主框架实战对比
  • Ubuntu 20.04下从零搭建SDN实验环境:Mininet、RYU与Wireshark实战
  • 【非标自动化】2、认识元器件(固态继电器)
  • 知名的在线考试系统多维度剖析:助你轻松应对各种考试场景
  • 深入解析门户网站建设情况报告:揭秘2024年企业数字化转型的核心痛点与破局之道
  • GBase 8a数据库中建表注意事项详解
  • Fable5:AI设计合伙人如何用Claude模型重塑UI/UX工作流
  • 深度解析桐庐县建设局网站:如何获取最新建筑审批与政策资讯指南
  • 零基础入门与进阶实战揭秘:揭秘网站建设主要课程的核心架构与学习路径
  • PostgreSQL 官方 Windows 安装
  • 动漫谷网站建设策划书怎么做?资深建站专家揭秘高转化率方案,助力ACG电商突围
  • 基于视觉大模型的售后客服机器人:技术架构与本地部署实践
  • 人的大脑很容易高估自己。
  • NUMA架构原理与性能优化实战指南
  • 从RAG到智能体生态:AI应用开发的核心技术演进与实践
  • PKC 第 070 个开关:摇一摇隐藏昵称的位置、验证方法与风险边界
  • 5G组网部署核心解析:从SA/NSA架构到网规网优实战
  • 从零手写ReAct循环:深入理解AI Agent核心架构与实现原理
  • PKC 第 075 个开关:领后回复的位置、验证方法与风险边界
  • 线路板曝光机如何决定PCB制造精度上限
  • asp.net网站建设项目实战资料:从入门到精通的全方位避坑指南
  • 深度解析中国电力建设集团有限公司网站:揭秘央企数字化转型背后的硬核力量与未来蓝图
  • 流式 Markdown 渲染完全指南【三】
  • 12-丢弃提交的内容
  • 3D模型局部变形技术:从顶点操作到面部网格塑形实战