Переопределить вход в систему с помощью reCaptcha - PullRequest
0 голосов
/ 08 марта 2011

Я пытаюсь переопределить вход в систему Rails, чтобы включить recaptcha.Я следовал за шагами здесь

http://presentations.royvandewater.com/authentication-with-devise.html#8

, однако по какой-то причине аутентификация всегда терпит неудачу.Чтобы изолировать проблему, я удалил весь свой код и вызвал файл super напрямую.

class SessionsController < Devise::SessionsController
  def create
    super
  end
end

. Файл находится по адресу: Rails.root / app / controllers / session_controller.rb..rb но я предполагаю, что это была просто ошибка.Попробовать его тоже не помогло.

Я даже скопировал полный код Sessions Controller в свой собственный, но проблема все еще остается.Аутентификация здесь не срабатывает конкретно:

resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")

Есть идеи, что я могу делать неправильно?

1 Ответ

0 голосов
/ 10 августа 2011

Не уверен, что вы можете делать неправильно - не уверен, поможет ли это, но вот некоторые другие ресурсы для настройки recaptcha с помощью devise: https://github.com/plataformatec/devise/wiki/How-To:-Use-Recaptcha-with-Devise

Recaptcha: https://github.com/ambethia/recaptcha/

Вот как это сделать при создании. Я полагаю, это аналогичный подход для входа в систему, просто переопределите контроллер сессий, как вы делаете, вместо контроллера регистрации

class Users::RegistrationsController < Devise::RegistrationsController

def create
     if session[:omniauth] == nil #OmniAuth
       if verify_recaptcha
         super
         session[:omniauth] = nil unless @user.new_record? #OmniAuth
       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
     else
       super
       session[:omniauth] = nil unless @user.new_record? #OmniAuth
     end
   end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...