簡體   English   中英

增加 ReCaptcha 過期時間?

[英]Increase ReCaptcha expiration time?

如何增加谷歌 ReCaptcha 的過期時間? 我試過下面一個,

  <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>

但它不起作用。

這在 Invisible 和 Checkbox 版本上都對我有用。 我知道您想“增加”時間,但這不是 Google 提供的選項。 我只是每 5 分鍾重新啟動一次盒子。

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

此外,將 Google Developer Console 中的“高級”框滑塊設置為“最少限制”似乎也有幫助。

請記住,除非您有額外的 AJAX 驗證,否則您可能不需要重置或延長時間,使用新的“Invisible” Recapcha。 我注意到,當我使用新的“隱形”方法時,如果我只在首先驗證表單時觸發它,那么該框將永遠保持良好狀態。

QED 一個更好的問題解決方案可能很容易使用這個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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM