35 Stimmen

Devise eingeloggt Root Route Schienen 3

Hallo Jungs . Also dachte ich über diese coolio Idee, wenn Sie eingeloggt sind, dann erhalten Sie eine Art von Dashboard, sonst erhalten Sie eine Informationen/Anmeldung/Anmeldeseite Also wie mache ich das

Ich möchte dies hauptsächlich in Routes = nicht etwas wie

def index
  if current_user.present?
    render :action => 'logged_in'
  else
    render :action => 'logged_out'
  end
end

vielen Dank im Voraus!

/ Oluf Nielsen

80voto

Joe Lalgee Punkte 971

Ich denke, Sie haben vielleicht danach gesucht:

authenticated :user do
  root :to => "dashboard#show"
end

root :to => "devise/sessions#new"

Hinweis: Es ist authentifiziert*d*

25voto

Shayne Sweeney Punkte 561

Auch ich wollte dies in meiner App, hier ist, was ich kam mit.

MyCoolioApp::Application.routes.draw do
  root :to => 'users#dashboard', :constraints => lambda {|r| r.env["warden"].authenticate? }
  root :to => 'welcome#index'

  get "/" => 'users#dashboard', :as => "user_root"

  # ..
end

In Rails 3 können Sie verwenden Anfragebasierte Beschränkungen zur dynamischen Abbildung Ihrer root Route. Die obige Lösung funktioniert für das Devise-Authentifizierungs-Gem, kann aber so angepasst werden, dass sie Ihre eigene Implementierung unterstützt.

Mit den oben genannten root_path o / leitet zu einer WelcomeController#index Aktion für nicht authentifizierte Anfragen. Wenn ein Benutzer im selben System angemeldet ist root_path wird weitergeleitet zu UsersController#dashboard .

Ich hoffe, das hilft.

21voto

zezim Punkte 321

Ich habe das gleiche Problem, und ich habe es damit gelöst:

authenticated :user do
  root :to => "wathever#index"
end
unauthenticated :user do
  devise_scope :user do 
    get "/" => "devise/sessions#new"
  end
end

Ich hoffe, es hilft.

4voto

BaroqueBobcat Punkte 9952

Verwenden Sie die Geräte vor den Filtern?

class FooController < ActionController::Base
  before_filter :authenticate_user!
...

Versuchen Sie doch, die Standard-Anmeldeansichten so zu ändern, dass sie die gewünschten Infos/Anmelde-/Anmeldeinformationen enthalten.

0voto

Joost Schuur Punkte 4095

Das ist das, was ich derzeit in meiner Anwendungslayoutdatei verwende. Ich habe es noch nicht in Teilbereiche aufgeteilt:

            <% if user_signed_in? %>
                <a href="http://stackoverflow.com/profile"><%= current_user.email %></a> | 
                <%= link_to "Logout", destroy_user_session_path %>
            <% else %>
                <%= link_to "Login", new_user_session_path %> |
                <%= link_to "Register", new_user_registration_path %>
            <% end %>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X