2011-11-09 8 views
8

devo ignorare Devise controllore sessioni durante la procedura di accesso (Rotaie 3.0.9, rubino 1.9.2, ideare 1.3.4), ho provato questo senza alcun effettoRails 3 Azionatore escogitare sessioni controllore

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 

idee?

MODIFICA Come indicato nella risposta, ho anche bisogno di cambiare il percorso. Inoltre, ho anche bisogno di copiare le viste. E 'meglio spiegato qui http://presentations.royvandewater.com/authentication-with-devise.html#8

La mia strategia su misura:

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 

risposta

13

Avete modificato il percorso per utilizzare il nuovo controller?

/config/routes.rb 

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

Sì, l'ho capito anch'io e devo anche copiare i punti di vista. Mantengo la rotta originale 'devise_for: users' in aggiunta alla modifica sopra? Non desidero ignorare le altre azioni. –

+0

C'è un altro problema con questo, inoltre non esegue la strategia di autenticazione del database predefinita oltre alla strategia personalizzata che aggiungo, non so come risolvere questo problema. –

+0

Dovrebbe esserci solo 1 'devise_for', e dopo aver copiato le viste dovrebbe funzionare anche con le azioni non sovrascritte. Per quanto riguarda l'altro problema, non sto seguendo completamente. Hai l'opzione ': database_authenticatable' impostata nel tuo modello. (cioè ideare: database_authenticatable) – Olives