2016-06-07 334 views
2

我正在使用RecaptchaV2,並將其用作對我的軟件進行身份驗證的第一步驗證。認證過程通常如下所示:失敗的recaptcha檢測

輸入用戶ID>驗證驗證碼>執行進一步的驗證(可配置的,例如密碼時應+ 2FA)

理想情況下,我會執行recpatcha當希望能夠檢測用戶失敗,並且當用戶失敗次數過多時,執行IP地址或用戶ID的臨時鎖定。但是,似乎Recaptcha沒有對失敗情況進行回調,並且只提供成功時調用的「數據回調」參數。所有驗證似乎都完全封裝在窗口小部件中,並且我的代碼在成功之前從未被通知驗證的狀態。

我的代碼基本上只是文檔中的示例(https://developers.google.com/recaptcha/docs/display#auto_render),並且有一些額外的功能可以在recaptcha完成時自動提交頁面上的表單。這裏的粗線條:

<div style="text-align: center" id="g-recaptcha-container"> 
    <div class="g-recaptcha" data-sitekey="secret-site-key" data-callback="recaptcha2_success" style="display: inline-block"></div> 
</div> 

而且我的javascript:

function recaptcha2_success(response) { 

    var proceed = document.getElementById('g-recaptcha-proceed'); 
    var form = document.getElementsByName('login-form'); 

    // display the loading message 
    if (proceed !== undefined) { 
     proceed.style.display = 'block'; 
    } 
    // submit the main form 
    if (form.length > 0) { 
     form[0].submit(); 
    } 
} 

有沒有人有什麼建議?我在開發者文檔中找不到任何相關內容。

+0

[?谷歌ReCAPTCHA技術如何使所需的(可能的重複http://stackoverflow.com/questions/29612879/google-recaptcha-how-to- make-required) – colecmc

+0

在這裏看到我的答案,它可能會幫助你。 http://stackoverflow.com/a/37733209/5190589 – Ryan89

+0

感謝您花時間回覆,colecmc和Ryan89。鏈接的提交實際上與我想要的相反。表單本身僅包含** reCaptcha小部件。一旦用戶與小部件進行了交互,表單就會自動提交。問題是reCaptcha小部件只在_successful_驗證時調用我的Javascript,而不是在_failure_上。這可以防止我能夠檢測到故障並執行鎖定。 –

回答

0

您不必在回調函數中使用captcha元素進行任何操作。 響應對象不爲空時,驗證碼是正確的:

function recaptcha2_success(response) { 
    if (response.length > 0){ 
     alert("success!") 
    } 
}