Ruby 如何在我的应用程序中插入验证码';s使用OmniAuth identity for rails的注册表

Ruby 如何在我的应用程序中插入验证码';s使用OmniAuth identity for rails的注册表,ruby,ruby-on-rails-3.2,omniauth,Ruby,Ruby On Rails 3.2,Omniauth,我正在尝试在我的申请登记表中插入验证码。我需要放置一个控制器助手方法来检查验证码是否有效。我将OmniAuth标识用于我的简单身份验证,它不提供控制器方法。用户的注册表单直接发布到OmniAuth处理程序,因此无法检查正在使用的this helper方法 if verify_recaptcha(:model => @post, :message => "Oh! It's error with reCAPTCHA!") && @post.save # ... e

我正在尝试在我的申请登记表中插入验证码。我需要放置一个控制器助手方法来检查验证码是否有效。我将OmniAuth标识用于我的简单身份验证,它不提供控制器方法。用户的注册表单直接发布到OmniAuth处理程序,因此无法检查正在使用的this helper方法

if verify_recaptcha(:model => @post, :message => "Oh! It's error with reCAPTCHA!") && @post.save
    # ...
else
    # ...
end

关于如何使用OmniAuth identity放置控制器帮助器方法,有人可以帮助我吗?

自述文件给出了将OmniAuth identity生命周期事件连接到控制器操作的提示。下面是一个适合您要求的示例:

# application.rb
use OmniAuth::Builder do
  provider :identity,
    :fields => [:email],
    :on_login => UsersController.action(:login)
end
这将是有帮助的

例如:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :identity,  on_validation: lambda {|env| Captcha.valid_captcha?(env)}
end

谢谢你的回复。我通过在我的身份控制器中调用一个方法来尝试这一点。但是没有用。你能用任何例子来解释一下吗?你能用你的尝试来更新你的问题吗?在没有看到你的代码的情况下调试这个问题是很困难的。这只是个人观点,但我觉得CAPTCHA非常烦人,特别是从用户的角度来看(不要忘记用户,毕竟他们会决定你的网站是否好)。如果你只是想阻止垃圾邮件,我建议你使用蜂蜜陷阱法。创建一个隐藏的文本字段,并执行一个规则,如果这个隐藏字段被填充,那么就不要发布表单