2017-05-09 2 views
1

Es scheint die naheliegendste Methode zu sein, das Modellbenutzermodell anzuhängen, um die Methode nach_Datenbank_Authentifizierung zu überschreiben.Wie unterscheidet man ein Rails/Devise Login, wenn es per Passwort oder per Cookie gemacht wird?

Aber innerhalb dieser Modellmethode konnte ich kein Flag an den Controller senden, der die Root-Route behandelt. (Irgendwie konnte current_user den aktivierten Parameter atr_accessor nicht erreichen).

Also, was ist die meisten Rails Weg, um die Authentifizierung zu unterscheiden, wenn es durch ein Passwort oder durch einen Cookie gemacht wird?

Antwort

3

Im MVC Modell der Schienen ist das Modell nicht sitzungsabhängig. Ihr Benutzermodell weiß also und sollte nicht wissen, ob ein Benutzer angemeldet ist.

Wenn Sie von unterscheiden wollen, wenn der Benutzer aus dem Vorzeichen vs anderen Treffern auf dem Stammpfad umgeleitet wird einen Wert in der Sitzung festlegen:

# routes.rb 
devise_for :users, controllers: { sessions: 'sessions' } 

# app/controllers/sessions_controller.rb 
class SessionsController < Devise::SessionsController 
    def create 
    super do 
     session[:just_signed_in] = true 
    end 
    end 
end 

# this would be whatever controller you have that handles the route path 
class HomeController 
    after_action :cleanup! 

    def index 
     if session[:just_signed_in] 
     # ... 
     else 
     # ... 
     end 
    end 

    private 

    def cleanup! 
    session.delete(:just_signed_in) 
    end 
end 

Einen anderen Weg, dies zu tun ist durch Hinzufügen ein Abfrageparameter an die redirect path after sign in.

+0

Dank max. Geschätzt. –

Verwandte Themen