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

reCAPTCHA v2无操作超时时间是多少?vue-recaptcha如何解决过期问题

reCaptcha V2过期时长说明

谷歌官方未公开reCaptcha V2的固定过期时长,根据实际测试和社区反馈,默认过期时间为用户完成验证后2分钟,但如果页面处于后台、用户无操作等场景下,过期时间可能提前到1分钟左右,和你遇到的实际表现吻合。

问题修复方案
  • 优先调整后端接口逻辑:将reCaptcha token校验步骤调整到长耗时业务逻辑执行之前。接口收到请求后第一时间校验token有效性,校验通过后再执行耗时业务,此时token从生成到校验的间隔仅为网络传输时间,完全不会触发过期,该方案改造成本最低,效果最优。
  • 优化长耗时接口响应速度:如果业务逻辑允许,对接口进行异步改造、性能优化,将响应时长压缩到1分钟以内,从根源上避免过期问题。
  • 前端逻辑适配:如果以上两种方案均无法落地,可以修改前端代码适配过期场景,修改参考如下:

修改后的onExpired方法:

onExpired: function () {
  this.recaptchaResponse = null
  // 重置验证码组件,提示用户重新验证
  this.$refs.recaptcha.reset()
  alert('验证码已过期,请重新完成验证后提交')
}

新增表单提交前置校验逻辑:

async handleSubmit () {
  // 提交前先判断验证码是否已完成
  if (!this.recaptchaResponse) {
    alert('请先完成人机验证')
    return
  }
  // 此处调用你的后端长耗时接口
  try {
    const submitRes = await yourSubmitApi({
      // 你的其他表单参数
      recaptchaResponse: this.recaptchaResponse
    })
    // 处理提交成功逻辑
  } catch (err) {
    // 若后端返回验证码过期错误码,主动触发过期逻辑
    if (err.code === 'RECAPTCHA_EXPIRED') {
      this.onExpired()
    }
  }
}
  • 流程拆分适配:如果长耗时任务必须前置,也可以将提交流程拆分为两步:用户提交表单后先触发后端任务执行,前端轮询任务状态,待任务处理完成后再唤起reCaptcha验证,验证通过后完成最终提交,避免token等待过程中过期。

内容的提问来源于stack exchange,提问作者Happy Coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:48:03