Rails Recaptcha插件总是返回false

我正在使用这里找到的rails recaptcha插件: http : //github.com/ambethia/recaptcha/tree/master

我已经在recaptcha.com上注册了一个帐户,获得了一个公钥和私钥,并且该站点配置了一个全局密钥(暂时)。

config/environment.rb我设置了环境变量:

 ENV['RECAPTCHA_PUBLIC_KEY'] = 'xxxxxxxxxxxxxxxx' ENV['RECAPTCHA_PRIVATE_KEY'] = 'XXXXXXXXXXXXXXxx' 

在我看来,我像这样渲染validation码:

  

在我的控制器处理这个表单我有这个:

 unless verify_recaptcha # 'new' return end 

我的问题是verify_recaptcha 总是返回false。

我必须遗漏一些简单的东西,但我没有看到它。 在我得到一个smart-alec回复之前,是的,我正在在validation码框中键入正确的单词:)

就像一张纸条一样,确保你没有意外地切换公钥和私钥; 它们是不同的。

我不知道你是否已经在处理它是否正确的可能性,在这种情况下你会想要这样的东西:

 if verify_recaptcha @thing.save! redirect_to success_path else flash[:error] = "There was an error with the recaptcha code below. Please re-enter the code and click submit." render :action => 'new' end 

并记得使用:

 <%= recaptcha_tags :ssl => true %> 

如果您使用的是SSL。

我进去看了一下recaptcha插件。 相关部分的内容如下:

 recaptcha = Net::HTTP.post_form URI.parse("http://#{server}/verify"), { "privatekey" => private_key, "remoteip" => request.remote_ip, "challenge" => challenge, "response" => response } 

这需要挑战和响应并返回响应。 当我尝试挑战并生成响应时,我得到了"true\nsuccess" 。 如果符合以下条件,则以下代码行返回false

 answer, error = recaptcha.body.split.map { |s| s.chomp } unless answer == "true" 

由于我回到"true\nsuccess" ,答案将是"true" ,因此代码应该通过。

您可以尝试使用Net :: HTTP直接发送响应并查看您获得的响应吗?