Setting Up Devise with Recaptcha - Rails 3



我曾尝试根据之前询问的堆栈溢出问题来设置此功能,但一直未能使其正常工作。captcha出现在我的表格上,但用户仍然可以在不填写captcha的情况下注册。

我按照以下指示工作。https://github.com/plataformatec/devise/wiki/How-To:-与Devise 一起使用Recaptcha

  1. 我有我的私人和公共钥匙

Environment.rb

ENV['RECAPTCHA_PUBLIC_KEY']  = 'mykey1234567'
ENV['RECAPTCHA_PRIVATE_KEY'] = 'mykey1234567'
  1. 我已经安装了repatcha宝石

Gemfile

source 'http://rubygems.org'
gem 'rails', '3.0.3'
gem 'sqlite3-ruby', :require => 'sqlite3'
gem 'devise', '1.1.7'
gem "jquery-rails"
gem 'recaptcha', :require => 'recaptcha/rails'
  1. 我已将repatcha标签添加到我的注册视图中

new.html.erb

      <%= recaptcha_tags %>
  <p><%= f.submit "Sign up" %></p>
  1. 已创建注册控制器

    rails生成控制器注册创建

注册管理员

class RegistrationsController < Devise::RegistrationsController
def create
      if verify_recaptcha
        super
      else
        build_resource
        clean_up_passwords(resource)
        flash[:alert] = "There was an error with the recaptcha code below. Please re-enter the code and click submit."
        render_with_scope :new
      end
    end
end

我应该编辑我的路线文件,但不确定到底是什么原因导致了这个问题。

我的路线文件

  devise_for :troopers, :path => "troopers", :path_names => { :sign_in => "login", :sign_out => "logout", :sign_up => "register" }

谢谢你的帮助。

您还需要告诉Devise使用您自定义的RegistrationsController。您可以通过在devise_for声明中指定:controllers选项来执行此操作。如果没有这一点,就会调用Devise::RegistrationsController,这可能解释了为什么repatcha不起作用。

  devise_for :troopers,
             :controllers => { :registrations => "registrations" },
             :path => "troopers",
             :path_names => { :sign_in => "login", :sign_out => "logout", :sign_up => "register" }

相关内容

  • 没有找到相关文章

最新更新