Recaptcha客户端验证的理想解决方案

时间:2011-05-13 11:09:32

标签: c# jquery recaptcha

的Recaptcha: 我想使用recaptcha作为我的网站的登录页面,它建立在jQuery和ASP.net上。在发布这个问题之前,我用Google搜索了关于recaptcha并研究了这个... 使用带有ASP.NET的recaptcha进行服务器端验证,其中我需要包含reCaptcha的dll并将其用作服务器控件,然后使用页面的isValid属性对其进行验证。

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

是否有任何好的教程可以做到这一点或理想的解决方案?

6 个答案:

答案 0 :(得分:3)

你不能在客户端做到这一点。如果没有服务器的帮助,你就无法做到这一点,因为recaptcha归谷歌所有(它不是你的域名),你不能直接提出验证请求。

出于安全原因,禁止跨域XMLHttpRequests。您可以在填写recaptcha(onblur的{​​{1}})时对您的服务器进行AJAX调用并验证它。

答案 1 :(得分:2)

为什么在世界上你想要在客户端处理验证码?可能你会在表单提交函数中挂钩,如下所示:

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

你可以阻止某人这样做:

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

答案 2 :(得分:1)

这是我的解决方案

添加对google ajax recapcha的引用并生成capcha。

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

希望这有帮助

答案 3 :(得分:0)

答案 4 :(得分:0)

如果你展示了你已经拥有的东西可能会有所帮助,但我确实发现这可能与你想要的东西相似。

Validating Recaptcha using client side call

答案 5 :(得分:0)

我建议使用google的reCaptcha(是的,它是服务器端)因为客户端总是可以打开客户端Captcha。

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

8 jQuery CAPTCHA Plugin with Tutorial

希望有所帮助:)