2012-03-23 4 views
0

Ich versuche Devices Controller-Helper-Methode signed_in zu verwenden? um zu überprüfen, ob ein Benutzer bereits signed_in hat, wenn ja, dann möchte ich auf eine bestimmte Seite umleiten.Legen Sie fest, wie benutzerdefinierte Check-in-Session-Controller hinzugefügt werden?

Ich habe das versucht, aber die signed_in? Methode immer True zurück, wie kann ich das machen?

class SessionsController < Devise::SessionsController 
    def new 
    redirect_to root_url 
    end 

    def create 
    if signed_in?(resource_name) 
     redirect_to where_-_want_to_url 
    else 
     resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#failure") 

     return sign_in_and_redirect(resource_name, resource) 
    end 
    end 

    def sign_in_and_redirect(resource_or_scope, resource=nil) 
    scope = Devise::Mapping.find_scope!(resource_or_scope) 
    resource ||= resource_or_scope 
    sign_in(scope, resource) unless warden.user(scope) == resource 
    return render :json => {:success => true, :redirect => stored_location_for(scope) || after_sign_in_path_for(resource)} 
    end 

    def failure  
    return render :json => { :success => false } 
    end 

end 
+0

Wofür möchten Sie das verwenden? Möchten Sie nur eine andere ** Homepage ** anzeigen, je nachdem ob der Benutzer angemeldet ist oder nicht? – Ashitaka

+0

Nein, es gibt eine Situation, in der die Anmeldeseite angezeigt wird, aber tatsächlich ist der Benutzer bereits angemeldet. Also möchte ich eine Kostümumleitung durchführen – Rn2dy

Antwort

0

Sie wollen, dass in den Helfer zu leben.

Wenn ein Benutzer-in, speichern Sie die Benutzer als current_user

self.current_user = user 

zu überprüfen, um, wenn der Benutzer in Ihnen unterzeichnet wird, kann

def signed_in? 
    !current_user.nil? 
end 

Von Michael Hartl http://ruby.railstutorial.org/chapters/sign-in-sign-out#sec:current_user

bearbeiten verwenden :

Sorry, ich habe gerade den Schnitt gelesen. Du wolltest Devise.

Wie funktioniert def 'signed_in?' sieht aus wie?

Für die erste Implementierung empfehle ich, Ihre eigene zu rollen, um ein besseres Verständnis zu haben und Sie wissen zu lassen, wo alle Komponenten für schnelle Anpassung sind. Nächste Rolle können Sie andere Methoden implementieren.

0

Haben Sie if user_signed_in? versucht nun

, ich bin wirklich nicht sicher, was Sie versuchen zu erreichen, aber ich würde mein Routing wie das in der Steuerung nicht definieren. Ich würde so etwas tun:

# config/routes.rb 
authenticated :user do 
    root :to => where_I_want_to_url 
end 
root :to => 'welcome#index' 
Verwandte Themen