厦门seo网站管理中国国家住房和城乡建设部网站

张小明 2026/3/2 21:39:51
厦门seo网站管理,中国国家住房和城乡建设部网站,营销qq软件,百度网盘服务电话6988微信扫码登录 iframe 方案中的状态拦截陷阱 背景 在 Web 端实现微信扫码登录时#xff0c;常见的方案是使用 iframe 嵌入微信二维码页面。用户扫码授权后#xff0c;iframe 内部会重定向到我们配置的回调页面#xff0c;回调页面再通过 postMessage 通知父页面完成登录。 …微信扫码登录 iframe 方案中的状态拦截陷阱背景在 Web 端实现微信扫码登录时常见的方案是使用 iframe 嵌入微信二维码页面。用户扫码授权后iframe 内部会重定向到我们配置的回调页面回调页面再通过postMessage通知父页面完成登录。最近在给登录流程增加「用户协议勾选」功能时遇到了一个有趣的问题用户勾选协议后扫码在手机上确认授权前又取消了勾选结果登录流程依然执行了。问题现象预期行为用户取消勾选协议 → 拦截登录流程 → 不跳转实际行为用户取消勾选协议 → 控制台显示未同意协议不触发事件 →页面依然跳转了架构分析整个微信登录的组件结构如下Login.vue (页面) └── Container.vue └── wxQrCodeLogin.vue └── iframe (微信二维码) └── WxLogin.vue (回调页面iframe 内部)登录流程用户勾选协议 → 显示二维码iframe用户手机扫码 → 微信授权页面用户确认授权 → iframe 重定向到WxLogin.vueWxLogin.vue调用后端接口获取 token通过postMessage通知父页面父页面完成登录跳转问题根因在wxQrCodeLogin.vue中我添加了协议状态拦截window.addEventListener(message,(msg){// 未勾选协议直接返回if(!isAgree.value){console.log(未同意协议不触发事件);return;}if(msg.data.type1){emit(qrLoginSuccess,msg.data.token);}});看起来没问题但实际上拦截失效了。原因在WxLogin.vueiframe 内的回调页面if(token){Store.set_cookie(token,token);// 问题在这里window.parent.postMessage({type:1,token},*);}iframe 内部直接设置了 cookie由于 iframe 和父页面同域cookie 是共享的。当 token 被写入 cookie 后主站的登录状态检测逻辑检测到 token自动触发了页面跳转。整个过程微信授权成功 → iframe 内WxLogin.vue执行Store.set_cookie(token, token)→cookie 已写入postMessage发送给父页面父页面isAgree检查 → 返回不处理但 cookie 已经存在 → 主站检测到登录状态 → 跳转拦截的是postMessage但 cookie 的写入发生在postMessage之前根本拦不住。解决方案核心原则iframe 回调页面只负责「中转」不应该直接操作登录状态cookie、localStorage 等。状态的写入应该由父页面根据业务逻辑决定。代码修改WxLogin.vueiframe 回调页面// 修改前if(token){Store.set_cookie(token,token);// 删除这行window.parent.postMessage({type:1,token},*);}// 修改后if(token){// 只传递 token不设置 cookiewindow.parent.postMessage({type:1,token},*);}父页面在收到postMessage后根据isAgree状态决定是否设置 cookie 并完成登录window.addEventListener(message,(msg){if(!isAgree.value){// 可以弹出协议确认弹窗让用户选择return;}if(msg.data.type1){// 在这里设置 cookieawaitloginCallback({token:msg.data.token});emit(qrLoginSuccess,msg.data.token);}});延伸思考为什么 v-show 不能解决问题最初尝试用v-show隐藏 iframe但v-show只是display: noneiframe 依然存在内部的回调逻辑照常执行。为什么 v-if 也有问题v-if会销毁 iframe但如果用户已经扫码进入微信授权页面此时销毁 iframe 再重建新的 iframe 无法接收之前扫码的授权回调用户需要重新扫码。最佳实践iframe 回调页面职责单一只负责接收授权结果、调用后端接口、通过postMessage传递数据状态操作由父页面控制cookie、localStorage、页面跳转等操作都应该在父页面根据业务状态决定考虑异步流程中的状态变化用户可能在异步操作过程中改变状态设计时要考虑这种边界情况总结这个问题的本质是职责划分不清晰导致的。iframe 内的回调页面越权操作了本应由父页面控制的登录状态使得父页面的拦截逻辑形同虚设。在设计跨窗口/跨 iframe 通信的功能时要明确各个组件的职责边界状态的写入和业务逻辑的执行应该集中在一个地方避免分散导致的控制失效。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

扁平图标网站郑州网站推广电话

YOLO目标检测精度优化的七个关键步骤 在工业质检线上,一台摄像头正高速扫描着流水线上的电子元件。突然,一个微小的焊点虚焊被准确识别并触发报警——这个看似简单的动作背后,是YOLO模型历经数百次调优后的精准判断。而在自动驾驶系统中&…

张小明 2026/1/20 16:09:57 网站建设

在网站里面如何做支付工具不收费的网站

35 岁后被淘汰?实施和运维的 “青春饭” 传言,该戳破了 在IT行业,“35岁危机”像一道悬在头顶的达摩克利斯之剑,让不少从业者焦虑:自己的岗位到底是不是“吃青春饭”?其中,实施工程师和运维工程…

张小明 2026/1/20 16:09:26 网站建设

网站建设的利益网站空间管理系统

Kotaemon能否用于家庭财务管理?收支分类智能建议 在每天通勤路上买杯咖啡、周末带孩子去超市采购、月底查看账单时突然发现“这笔钱怎么花的?”——这些场景对大多数家庭来说再熟悉不过。记账看似简单,但真正坚持下来的人却寥寥无几。问题不在…

张小明 2026/1/20 16:08:55 网站建设

海建网站九江做网站哪家公司好

文章目录 Moe与LoRA结合的高效微调方法 实现步骤 关键配置参数 来源:https://github.com/Cohere-Labs-Community/parameter-efficient-moe/blob/main/demo.png 注:原文未能完整分析完整,待补充 Moe与LoRA结合的高效微调方法 混合专家(MoE)与低秩适应(LoRA)结合是一种…

张小明 2026/1/20 16:08:24 网站建设

塘沽手机网站建设阿里云使用wordpress-move

随着工业物联网、智慧交通、新能源等领域的爆发式增长,时序数据正以 “每秒千万级写入、PB 级存储、多维度分析” 的特征,对数据库的性能、兼容性和扩展性提出严苛挑战。InfluxDB 作为时序数据库领域的经典方案,凭借轻量架构和专用语法在中小…

张小明 2026/1/20 16:07:53 网站建设

阿里云大淘客网站建设做网站开发使用百分比的好处

(1)实验平台:普中STM32F103朱雀、玄武开发板 我们知道 STM32F1 内部含有非常多的通信接口, 这一章我们就来学习下USART 串口通信。 本章要实现的功能是: STM32F1 通过 USART1 实现与 PC 机对话, STM32F1 的 USART1 收到 PC 机发来…

张小明 2026/1/20 16:07:22 网站建设