2016-06-26 6 views
0

Ich habe gerade Devise eingerichtet und die Dinge funktionieren ordnungsgemäß. Aus irgendeinem Grund arbeitet meine Seite bei der Authentifizierung nicht zusammen.Wie verknüpfen Sie eine authentifizierte Seite mit Devise in Ruby?

Hier ist meine routes.rb-Datei.

devise_for :users #, path_names: { sign_out: 'sign_out' } 
devise_scope :user do 
    authenticated :user do 
     root 'home#index'#, as: :authenticated_root 
    end 

    unauthenticated do 
     root 'devise/sessions#new', as: :unauthenticated_root 
    end 
    end 

    get "/dashboard" => "home#index" 

Als ich in localhost:3000 geben, es leitet mich auf die devise Anmeldeseite, die auf localhost:3000/users/sign_in existiert.

Wenn ich localhost:3000/dashboard eintippe, bringt es mich wie beabsichtigt zur Anmeldeseite, aber wenn ich meine Anmeldeinformationen eintrage, bringt es mich immer wieder zur selben Anmeldeseite zurück.

Hier ist meine Datei application_controller.rb.

protect_from_forgery with: :exception 
before_filter :authenticate_user! 

Meine Absicht ist es localhost:3000 umleiten mir zu einer authentifizierten Version von localhost:3000/dashboard zu haben, wo ich alles auf dieser Seite sehen. Nicht sicher, was passiert.

+0

so etwas wie dieses Versuchen in der Anwendung Controller 'def after_sign_in_path_for (resource) user_path (current_user) end' –

+0

So einfach habe ich' def after_sign_in_path_for (Ressource) Dashboard_path Ende für beide Anwendung und Home-Controller (wo das Dashboard lebt), aber nichts passiert. Irgendwelche Ideen? So ziemlich, die Anmeldung läuft immer noch in einer kreisförmigen Schleife der Anmeldung. – thetli8

+0

Okay, also ich denke, ich verstehe das Problem, aber habe keine Ahnung, wie zu beheben. Meine Abmelde-Schaltfläche wird auch nicht umgeleitet. Ich füge def 'after_sign_in_path_for (Ressource) dashboard_path end' und ' def after_sign_out_path_for (Ressource) root_path end' meiner Application und nichts passiert. – thetli8

Antwort

0

Ich schlage vor, Sie Ihren Code neu zu schreiben:

  1. entfernen before_filter :authenticate_user! als Problem mit nicht autorisierten Benutzern bereits von Routen abgewickelt.
  2. Entfernen devise_scope :user do ... end Block - es gibt eine einfachere Lösung (unten).

Ihre routes.rb:

authenticated :user do 
    root to: redirect('/dashboard'), as: :authenticated_root 
end 
root to: redirect('/users/sign_in') 

get "dashboard" => "home#index" 
Verwandte Themen