web-dev-qa-db-ja.com

reCAPTCHAセッションのタイムアウトを増やす

Google reCAPTCHAコンポーネントを使用していますが、セッションタイムアウトを増やすように求められました。私はこれに対する解決策を見つけることができませんでした。それはできますか?どうもありがとう。

enter image description here

12
Mark Wade

ReCAPTCHAチャレンジはGoogleから提供されるため、これに対する解決策はありません。セッションはアプリとユーザーの間ではなく、reCAPTCHAサービスとユーザーの間で行われます。 reCAPTCHAをマルチテナントWebアプリ(各テナントはそれを表示しているサイト)と考えてください。各テナントで使用できる設定は、認証キーと表示する必要のあるチャレンジのタイプのみです。

6
Cahit

1つの解決策は、フォームの送信方法を変更することです。可能であれば、reCaptcha送信をセカンダリサーバー側のページに移動します。これにより、Googleとのやり取りがすぐに行われる新鮮な状態が生まれます。

長いフォーム(複数のタブ)でも同じ問題が発生しました。フォームを2次処理ページに投稿すると、reCaptchaをすぐに処理して、この問題を解決できます。

0
Burndog

私は通常このJavaScriptを使用します

<script>
    function reload_recaptcha(grecaptcha) {
        grecaptcha.execute('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', { action: 'homepage' }).then(function (token) {
            console.log("TOKEN: [" + token + "]");
            var inputF = document.getElementById("retoken");
            inputF.setAttribute("value", token);

        });
    }
    function reload_recaptcha_wrapper() {
        reload_recaptcha(document.grecaptcha);
        setTimeout(reload_recaptcha_wrapper, 45000);
    }

    grecaptcha.ready(function () {
        document.grecaptcha = grecaptcha;
        reload_recaptcha(document.grecaptcha);
    });

    setTimeout(reload_recaptcha_wrapper, 45000);
</script>
0
Fran Ferrández