You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

python-fido2 Yubikey认证后JS if条件跳转失效问题

问题根因

两段代码没生效都是JS基础的作用域和分支覆盖问题:

  • 第一种写法里,stat是在第一个.then回调内用var声明的局部变量,作用域仅限这个回调函数内部,后面链式调用的第二个.then根本访问不到这个变量,运行时会直接报stat is not defined的错误,跳转逻辑完全不会执行。
  • 第二种写法虽然把判断和stat放在了同一个作用域,但没覆盖认证流程抛错的分支:如果认证过程中出现异常(比如用户没按时触摸密钥、密钥不匹配、请求超时),会直接走第二个错误回调弹出提示,不会执行回首页的逻辑。
正确实现

直接替换原有Promise链的逻辑即可,全分支覆盖跳转规则:

.then(function(response) {
  // 接口正常返回的分支
  const isAuthSuccess = response.ok;
  const statusText = isAuthSuccess ? 'successful' : 'unsuccessful';
  alert('Authentication ' + statusText + ' More details in server log...');

  if (isAuthSuccess) {
    // 替换为你实际的认证成功目标页面地址
    window.location.replace('认证成功后要跳转的页面地址');
  } else {
    window.location.href = '/';
  }
}, function(error) {
  // 认证流程抛错的分支
  alert(error);
  window.location.href = '/';
})
// 原代码最后空的.then和多余的闭合花括号可以直接删掉,不需要额外嵌套

小提示:JS里旧的var声明变量的作用域规则很容易踩坑,新写逻辑优先用const(声明不需要重新赋值的变量)、let(声明需要修改的变量),作用域逻辑和你熟悉的Python更接近,不容易出这类低级问题。

内容的提问来源于stack exchange,提问作者Paco 2015

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 16:45:14