【问题标题】:Recaptcha Ideal Solution for Client-Side ValidationRecaptcha 客户端验证的理想解决方案
【发布时间】:2011-05-13 11:09:32
【问题描述】:

验证码: 我想将 recaptcha 用于我的网站的登录页面,该页面基于 jQuery 和 ASP.net 构建。在发布这个问题之前,我在谷歌上搜索了 recaptcha 并研究了... 将 recaptcha 与 ASP.NET 一起使用,它正在执行服务器端验证,我需要包含 reCaptcha 的 dll 并将其用作服务器控件,然后使用页面的 isValid 属性对其进行验证。

我想要的是使用 jquery 对 recaptcha 进行客户端验证,我应该怎么做?

有没有什么好的教程或理想的解决方案?

【问题讨论】:

  • 客户端验证的问题是用户可以关闭它,而机器人可能甚至不会运行它......

标签: c# jquery recaptcha


【解决方案1】:

您不能在客户端执行此操作。如果没有服务器的帮助,您无法做到这一点,因为 recaptcha 归 google 所有(它不是您的域),但您不能直接请求验证它。

出于安全原因,禁止跨域 XMLHttpRequests。您也可以在填写验证码后(recaptcha_response_fieldonblur)对您的服务器进行 AJAX 调用并进行验证。

【讨论】:

  • 你能详细说明怎么做吗?像这样: $.ajax ({ type: 'POST', url: 'WebMethod', data: JSON.stringify(captchaInfo), contentType: 'application/json; charset=utf-8', dataType: 'json', 成功: function(msg) { alert(msg.d); // true o false, true 表示验证成功。} });
【解决方案2】:

您到底为什么要在客户端处理验证码?可能你会像这样在表单提交函数中挂上一些东西:

$("#form1").submit(function(){
    // other validation
    if(reCaptchaValidated()==false){
        return false;
    }
});

你能阻止某人这样做吗:

$('#form1').unbind("submit").submit();

【讨论】:

    【解决方案3】:

    这是我的解决方案

    添加对 google ajax recapcha 的引用并生成验证码。

    <script src="http://www.google.com/recaptcha/api/js/recaptcha_ajax.js" ></script>
    
    <script type="text/javascript">
      function showRecaptcha() {
         Recaptcha.create("6LfLrusSAAAAAIoi3XkbGvm2fLao3VjsNTjRoK-K", 'captchadiv', {
                                tabindex: 1,
                                theme: "white",
                                callback: Recaptcha.focus_response_field
         });
      }
      window.onload = function () { showRecaptcha(); }
    </script>
    

    HTML 条目

    <form id="myform">
       <div id="captchadiv">
        </div>
     <input type="submit" value="Submit" />
    </form>
    

    创建一个 Javascript 调用

    <script type="text/javascript">
    $('myform').submit(function() {
    
         $.getJSON("someurl/api/ValidateRecapcha", param).done(function (ret) {
                       if(ret) alert('recacha matched');
                       else alert('mismatched');
         })
    })
    </script>
    

    我使用 ASP.net Webapi 作为服务并从这里下载了 Recaptcha.dll。 https://developers.google.com/recaptcha/docs/aspnet

    [HttpGet]
    public bool ValidateRecapcha(string challengetKey, string input)
    {
       var r = new Recaptcha.RecaptchaValidator();
       r.PrivateKey = "Recapcha Private Key"
       r.Challenge = challengetKey;
       r.Response = input;
       r.RemoteIP = "REMOTE_ADDR".ToServerVariables();
       var response = r.Validate();
       return response.IsValid;
    }
    

    希望对你有帮助

    【讨论】:

      【解决方案4】:

      【讨论】:

        【解决方案5】:

        如果你展示你已经拥有的东西可能会有所帮助,但我确实发现这可能是你正在寻找的东西。

        Validating Recaptcha using client side call

        【讨论】:

          【解决方案6】:

          我建议使用 google 的 reCaptcha(是的,它是服务器端),因为客户端始终可以打开客户端验证码。

          但无论如何这里有 8 个使用 jQuery 的 Cpatchas,包括教程。

          8 jQuery CAPTCHA Plugin with Tutorial

          希望对你有帮助:)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-12-03
            • 1970-01-01
            • 1970-01-01
            • 2010-12-04
            • 1970-01-01
            • 2016-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多