2011-11-09 11 views
8

muszę zastąpić opracować sesje kontrolera podczas procesu logowania (Rails 3.0.9, Ruby 1.9.2, 1.3.4) opracować, próbowałem to bez wpływuRails 3 przesłanianie opracować sesje kontroler

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 

Pomysły?

EDYTOWANIE Jak wskazano w odpowiedzi, muszę również zmienić trasę. Ponadto muszę również skopiować widoki. To lepiej wyjaśnione tutaj http://presentations.royvandewater.com/authentication-with-devise.html#8

Mam zwyczaj strategia:

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 

Odpowiedz

13

Czy zmieniła swoją drogę do korzystania z nowego kontrolera?

/config/routes.rb 

    devise_for :users, :controllers => {:sessions => "sessions"} 
+0

Tak, właśnie to wymyśliłem i muszę również skopiować widoki, które wydaje. Czy oprócz powyższej zmiany zachowuję oryginalną ścieżkę 'devise_for: users'? Nie chcę przesłonić innych działań. –

+0

Jest jeszcze jeden problem z tym, nie wykonuje również domyślnej strategii uwierzytelniania bazy danych oprócz dodawanej strategii niestandardowej, nie wiem, jak to naprawić. –

+0

Powinno być tylko 1 'devise_for', a po skopiowaniu widoków powinien działać nawet z akcjami, których nie zastąpiłeś. Jeśli chodzi o inny problem, nie podążam za nim całkowicie. Czy masz ustawioną opcję ': database_authenticatable' w swoim modelu. (tj. wymyślić: database_authenticatable) – Olives

Powiązane problemy