Devise - Redirect automatisch von Root-URL, wenn Sie angemeldet sind

8

Ein Benutzer namens Carly ist nicht angemeldet und kommt auf der Indexseite an. Sie meldet sich an und wird automatisch zur Hauptseite des Dashboards weitergeleitet. Die Benutzerin Carly, die jetzt CarlyCoolness123 heißt, schließt ihren Browser und geht zum Abendessen. Sie kommt wieder auf ihren PC, aber dieses Mal erinnert sie sich nur an die eigentliche Indexseite namens coolness.com und nicht an coolness.com/index-dashboard. Ich möchte, dass dieser Benutzer automatisch zur Dashboardseite umgeleitet wird, wenn der Benutzer angemeldet ist. Dies bedeutet, dass der Benutzer nicht auf die Indexseite zugreifen kann, wenn der Benutzer angemeldet ist. Wie gehe ich vor? Ich habe ein paar Dinge ausprobiert, aber da ich davon ausgehe, dass die Leute hier viel besser verstehen als ich, gehe ich davon aus, dass meine Fehler hier nicht berücksichtigt werden müssen.

    
MFCS 19.01.2013, 16:16
quelle

3 Antworten

10

Dies setzt voraus, dass Sie Devise ordnungsgemäß eingerichtet haben und über einen Dashboard-Controller verfügen, der für das Rendern der Dashboard-Ansicht verantwortlich ist. In Ihrer App / controllers / dashboard_controller.rb tun Sie dies:

%Vor%

Fügen Sie in Ihrer Datei config / routes.rb Folgendes hinzu:

%Vor%

Wenn Sie eine Indexansicht für das Dashboard haben, sollten Sie beim Zugriff auf das Stammverzeichnis Ihrer App diese automatisch rendern (wenn der Benutzer angemeldet ist). Wenn der Benutzer nicht angemeldet ist, wird er umgeleitet, um die standardmäßige sign_in-Ansicht zu erstellen (falls Sie sie nicht erneut definiert haben)

    
peshkira 19.01.2013, 16:57
quelle
5

Ich bevorzuge es, die folgende Methode zu verwenden, da es für mich kontraintuitiv erscheint, mehrere Wurzelpfade zu haben [lesen: "Ich habe einen Fehler bekommen, als ich die anderen erwähnten Wege versuchte, also versuchte ich etwas anderes." p>

Ich denke, das funktioniert besser und ist eigentlich das, was @MFCS ursprünglich verlangt hat, da es den Wurzelpunkt nicht irgendwo anders bedingt macht. Stattdessen wird auf einen anderen Pfad umgeleitet, wenn der angemeldete Benutzer das root_path :

besucht

config / routes.rb:

%Vor%

app / controllers / welcome_controller.rb:

%Vor%

Ich bevorzuge das, da das Dashboard immer noch die Dashboard-URL im Browser anzeigt (anstelle der Root-URL), obwohl dies möglicherweise nicht die Präferenz anderer ist und auch von Ihrer bevorzugten Benutzererfahrung abhängt. p>

BEARBEITEN: Ich habe einen Fehler im Code gemacht, indem ich auf den DashboardController anstatt auf den Controller der Root-Ressource verwiesen habe.

    
jpalmieri 19.02.2015 00:22
quelle
1

Während dies ein alter Post ist, stieß ich irgendwie auf ein ähnliches Problem und da ich kein Device und stattdessen bcrypt benutzt habe, war dies die Lösung. Ich habe ein current_user in meinem Application Controller und auch authorize definiert.

%Vor%

Ich route dann alle Leute zu ihrem sicheren Dashboard und führe vor dem Filter auf allen sicheren Controllern wie zB before_filter :authorize aus. Wenn sie scheitern, werden sie auf die Homepage weitergeleitet. Hoffe das hilft jemandem in der Zukunft!

    
Juan Pablo Ugas 28.06.2016 23:32
quelle