使用Captcha与Meteor的帐户-ui-bootstrap-3

时间:2014-01-26 07:39:20

标签: javascript meteor npm captcha

使用Meteor套餐accounts-ui-bootstrap-3accounts-password的组合时,我们如何才能加入验证码?

如何将captchagen这样的包与accounts-ui集成?

1 个答案:

答案 0 :(得分:2)

直接使用Google Recaptcha实施我自己的解决方案

我做了什么

  1. 下载Recaptcha .js文件并将其放入lib
  2. 在我的html页面中添加了<div id="recaptchaDiv"></div>
  3. 在添加的客户端代码中
  4. Template.YOUR_TEMPLATE.rendered = function () { Recaptcha.create("YOUR_RECAPTCHA_KEY", "recaptchaDiv", { theme: "red", callback: Recaptcha.focus_response_field } ); };

    在服务器端,我有一个方法:

    validateCaptcha: function(challenge, resp){
      var self = this;
      var ip = self.connection.clientAddress;
      var result = HTTP.post('http://www.google.com/recaptcha/api/verify', {params: {
        privatekey:"YOUR_PRIVATE_KEY",
        remoteip:ip,
        challenge:challenge,
        response:resp,
      }});
    
      if(result.statusCode === 200){
        if(result.content==="true\nsuccess")
          return "success";
    
        return "fail";
      }
    }
    

    然后当您验证表单时,您调用此方法

    Meteor.call("validateCaptcha",Recaptcha.get_challenge(),Recaptcha.get_response(),function(res){
            if(res=="ok"){
              console.log("it works")
            }else{
              Recaptcha.reload();
              console.log("wrong captacha")
            }
          });
    

    您可能需要更改包本身中的一些代码,以将其添加到accounts-ui

    希望有所帮助