jquery - 如何在客户端验证 google recaptcha?

标签 jquery html asp.net recaptcha login-control

我在 3 次登录失败后显示的登录面板上实现了 google reCaptcha

但我想在单击登录按钮时使用 jQuery 在客户端幻灯片上验证 reCaptcha,这里是代码

<div style="display:none;width:310px;top:205px;left:558px;position:absolute" id="grecaptcha" runat="server">
  <cc1:GoogleReCaptcha  ID="ctrlGoogleReCaptcha1"  runat="server" PublicKey="6LdHrQ0TAAAAAD77ubv9Jr6q4RYkyddhXzX-XPB3" PrivateKey="xxxxxxx" />

  </div>
  <span id="captcha" style="margin-left:588px;color:red" />
<asp:Button ID="LoginButton" runat="server" OnClientClick="get_action();" CommandName="Login" Text="Inloggen" ValidationGroup="Login1" />

我如何使用 jQuery 做到这一点?

最佳答案

我分享我的代码解决方案。但是 proxy.php 和其他带有完整解释(包括后端部分)的详细信息,您可能会发现 here

使用数据回调参数重新验证

<script src="https://www.google.com/recaptcha/api.js" >;
<form method="post">
<div class="g-recaptcha" data-sitekey="[site_key]" data-callback="onReturnCallback" data-theme="light"></div>
<input value="submit" type="submit" />
</form>

JS 验证

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
var onReturnCallback = function(response) { 
    //alert('g-recaptcha-response: ' + grecaptcha.getResponse()); 
    var url='proxy.php?url=' + 'https://www.google.com/recaptcha/api/siteverify';  
    $.ajax({ 'url' : url, 
               dataType: 'json',
               data: { response: response},
               success: function( data  ) {                     
                var res = data.success.toString();
                        alert( "User verified: " + res);                    
                if (res ==  'true') { 
                       document.getElementById('g-recaptcha').innerHTML = 'THE CAPTCHA WAS SUCCESSFULLY SOLVED'; 
                                } 
                           } // end of success: 
         }); // end of $.ajax 
}; // end of onReturnCallback 
</script>

注意!

由于安全问题,后端部分 proxy.php 是必需的。

关于jquery - 如何在客户端验证 google recaptcha?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32945813/

相关文章:

asp.net - 增加应用程序池 session 超时不起作用

c# - 如何在中继器内动态按钮/我总是得到相同的值

asp.net - 禁用 Durandal 内联样式

javascript - 选择输入的独立行

javascript - 向用户显示表单发布方法后得到的解析结果

javascript - 处理未知数量的表单值

javascript - 如何比较 ul li 文本和数组值

html - 无法使 Angular 与 CSS 3D 一起工作

javascript - 在 for 循环内为 .setTimeout() 创建闭包

javascript - 尝试根据 &lt;input&gt; 按钮动态替换 url 和选项值