Rails 3 переопределяет контроллер сессий Devise - PullRequest
8 голосов
/ 09 ноября 2011

Мне нужно переопределить контроллер сессий Devise во время процесса входа в систему (Rails 3.0.9, Ruby 1.9.2, Devise 1.3.4), я попробовал это без какого-либо эффекта

class SessionsController < Devise::SessionsController

  # GET /resource/sign_in
  def new
    resource = build_resource
    clean_up_passwords(resource)
    respond_with_navigational(resource, stub_options(resource)){ render_with_scope :new }
  end

end

Идеи?

РЕДАКТИРОВАТЬ Как указано в ответе, мне также нужно изменить маршрут.Кроме того, мне также нужно скопировать мнения.Здесь лучше объяснить http://presentations.royvandewater.com/authentication-with-devise.html#8

Моя пользовательская стратегия:

devise.rb
config.warden do |manager|
  manager.strategies.add(:custom_strategy) do
    def authenticate!
      ... authenticate against 3rd party API...
      if res.body =~ /success/
        u = User.find_or_initialize_by_email(params[:user][:email])
        if u.new_record?
          u.save
        end
      success!(u)
    end
  end
end

1 Ответ

13 голосов
/ 09 ноября 2011

Вы изменили свой маршрут, чтобы использовать новый контроллер?

/config/routes.rb

  devise_for :users, :controllers => {:sessions => "sessions"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...