增加验证码过期时间?



如何增加谷歌验证码过期时间?我已经尝试过下面的一个,

  <script>
   var callback = function() {
      grecaptcha.render('id-of-render-element', {
         'sitekey': 'your-site-key',
         'expired-callback': expCallback
       });
   };
   var expCallback = function() {
      grecaptcha.reset();
   };
</script>
    <div id="id-of-render-element"></div>
<script src="https://www.google.com/recaptcha/api.js?onload=callback&render=explicit" async defer></script>

但它不起作用。

这在隐形和复选框版本上都对我有用。我知道你想"增加"时间,但这不是谷歌提供的选择。我只是每 5 分钟重新启动一次盒子。

setInterval(function(){ grecaptcha.reset(); }, 5 * 60 * 1000 ); 
// just reset every 5 min

此外,将Google开发人员控制台中的"高级"框滑块设置为"最少限制"似乎有所帮助。

请记住,对于新的"隐形"Recapcha,您可能不需要重置或延长时间,除非您有额外的AJAX验证。我注意到,当我使用新的"隐形"方法时,如果我只在表单首先验证时触发它,则框将永远保持良好状态。

质检部 更好的问题解决方案可能很简单 https://developers.google.com/recaptcha/docs/invisible#auto_render

最佳解决方案

<input type='hidden' name='recaptcha_token' id='recaptcha_token'>
<script src="https://www.google.com/recaptcha/api.js?render={{ env("GOOGLE_CAPTCHA_PUBLIC_KEY") }}"></script>
<script>
    setInterval(function () { 
        grecaptcha.ready(function() {
            grecaptcha.execute('{{ env("GOOGLE_CAPTCHA_PUBLIC_KEY") }}')    
            .then(function(token) {
                document.getElementById("recaptcha_token").value = token;
            }); 
        });
    }, 30 * 1000);
</script>

最新更新