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直接发送响应并查看您获得的响应吗?
- Rails:在textfield中执行onchange远程函数时如何从另一个字段获取值
- Mysql2 ::错误:重复条目”为密钥’index_admin_users_on_email’Ruby on Rails错误