验证码在rails 1.2.6中

时间:2014-02-04 18:10:46

标签: ruby-on-rails ruby

我正在使用一个非常旧的rails应用程序(v1.2.6),需要在站点上实现验证码。有谁知道我可以采取什么方法来做到这一点?

我尝试过:

  • 搜索支持v1.2.6(未找到任何内容)
  • 的rails插件
  • 设置simple-captcha插件(但仅适用于 rails> 3)

非常感谢任何帮助。谢谢:))

2 个答案:

答案 0 :(得分:1)

不需要使用插件,建议在可用时使用,但不是强制性的。 可能是"自己动手"安装需要更多步骤但绝对有效。 以reCAPTCHA documentation为例,有一个完整的部分专门解释没有插件的库的使用。

基本上有两种方法:

  1. 标准挑战和非JavaScript API。
  2. reCAPTCHA AJAX API
  3. 通过这些方式中的任何一种,取决于您的需求,希望您应该在许多方案中使用验证码而不会遇到麻烦。该API得到了很好的解释,并有一些例子。

    希望这有帮助。

答案 1 :(得分:0)

所以我最终按照Javier的建议实施了reCaptcha Non-JavaScript API

在我的视图

中添加了以下内容
<p class="text-black-11px-17px" style="color: red;"><%=flash[:captcha_error]%></p> 
<script type="text/javascript" 
src="http://www.google.com/recaptcha/api/challenge?k=PUBLIC_KEY_HERE"></script>
<noscript>
   <iframe
src="http://www.google.com/recaptcha/api/noscript?k=PUBLIC_KEY_HERE"
       height="300" width="500" frameborder="0"></iframe><br>
   <textarea name="recaptcha_challenge_field" rows="3" cols="40">
   </textarea>
   <input type="hidden" name="recaptcha_response_field"
       value="manual_challenge">
</noscript>

在我的控制器中添加了以下内容:

# verify reCaptcha
uri = URI.parse("http://www.google.com/recaptcha/api/verify")
response = Net::HTTP.post_form(uri, {
  "privatekey" => "PRIVATE_KEY_HERE", 
  "remoteip" => request.env['REMOTE_ADDR'], 
  "challenge" => params[:recaptcha_challenge_field], 
  "response" => params[:recaptcha_response_field]
})

flash[:captcha_error] = nil
if ((@contact.valid?) && (response.body.include? "success")) 
    # VALIDATION SUCCESSFUL - SEND THE EMAIL
elsif (response.body.include? "false")
   flash[:captcha_error] = "The CAPTCHA you entered is invalid. Please try again."
   render :action => 'contact'        
else
    render :action => 'contact'
end