使用Meteor套餐accounts-ui-bootstrap-3
和accounts-password
的组合时,我们如何才能加入验证码?
如何将captchagen这样的包与accounts-ui
集成?
答案 0 :(得分:2)
直接使用Google Recaptcha实施我自己的解决方案
我做了什么
lib
html
页面中添加了<div id="recaptchaDiv"></div>
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
希望有所帮助