news 2026/8/12 19:53:01

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
{“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 流程。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/12 19:52:15

Verilog仿真与调试实战:从语法陷阱到跨时钟域处理

1. 从“Hello, World!”到“为什么我的仿真卡住了?”如果你刚开始接触Verilog,或者已经用它写过几个模块,那么你大概率已经体会过这种感受:代码在编辑器里看起来一切正常,语法高亮赏心悦目,但一跑仿真&…

作者头像 李华
网站建设 2026/8/12 19:52:02

从整蛊脚本到实用工具:VBS、BAT、HTML/JS脚本的自动化原理与改造

1. 从“整蛊”到“脚本思维”:一个技术人的视角看到“整人代码脚本”这个标题,你可能会心一笑,想起学生时代在机房偷偷运行一个恶作剧程序,看着同学电脑屏幕突然闪烁或鼠标不听使唤时的“恶趣味”。但今天,我想从一个不…

作者头像 李华
网站建设 2026/8/12 19:52:00

Unity WebGL UI视频播放全攻略:从原理到实战避坑指南

1. 项目概述:为什么UI视频播放是个“坑”?刚接触Unity的新手,尤其是从其他游戏引擎转过来的朋友,很容易被一个看似简单的需求绊倒:在UI界面上播放一段视频。比如做个开场动画、功能演示,或者UI里的动态背景…

作者头像 李华
网站建设 2026/8/12 19:50:28

建设网站目录对于SEO优化的深远影响以及如何在2024年高效构建高质量网站目录以获取流量红利

说实话,在这个互联网信息爆炸的年代,很多人对“网站目录”这个词可能已经有些陌生了。大家习惯了去百度搜,去淘宝买,去微信公众号看,仿佛“目录”这种古老的概念已经被搜索引擎和推荐算法彻底取代了。但作为一个在SEO(搜索引擎优化)领域摸爬滚打多年的老兵,我可以非常肯…

作者头像 李华
网站建设 2026/8/12 19:50:04

揭秘四川超宇建设集团网站背后的匠心传承与真实口碑解析

在当前的建筑行业中,信息不对称往往是客户和施工方之间的一道难以逾越的高墙。尤其是对于很多需要寻找靠谱施工队伍的企业或个人来说,如何在浩瀚的网络海洋中筛选出真正有实力、有信誉、有良心的建筑公司,简直就像是大海捞针。这时候,一个优秀的企业官方平台就显得尤为重要…

作者头像 李华
网站建设 2026/8/12 19:48:46

Java AI Agent框架选型:LangChain4j、Spring AI Alibaba与自主框架实战对比

1. 从Spring AI的“水土不服”到AI Agent的落地困境最近在社区里看到不少讨论,很多开发者朋友在尝试用Spring AI构建AI Agent应用时,都遇到了不小的阻力。Spring AI作为Spring官方推出的AI集成框架,初衷是好的,它试图将大语言模型…

作者头像 李华