2016-05-06 7 views
0

ich auf einer App, in denen arbeite gibt es ein Modell Benutzer mit Rollen Mitglied und Admin.Von welcher Seite Anfrage auf Schienen für Devise Login generted

Nach Bedarf muss ich zwei separate Login-Seiten für die Rollen von Admin und Mitglied gemacht.

mit http://localhost:3000/admin/admin_login

es geht zur Admin-Login-Seite und mit

http://localhost:3000/users/sign_in 

es geht an Mitglied Login-Seite.

Irgendwie gelang es mir, entsprechend scenerio, nach sign_in und sigout zum entsprechenden Admin-Panel oder normalen Website für Mitglied zu routen.

Aber jetzt gibt es ein Problem, dass wenn Login fehlschlägt es an http://localhost:3000/users/sign_in umleiten, auch wenn in Admin-Fall.

Gibt es eine Möglichkeit, die ich kenne können, von dem dieser Anfrage wird entweder von

/admin oder /users/sign_in?

, damit ich sie auf entsprechende Seite

Antwort

1

Versuchen Sie einfach, wie diese umleiten: eine Klasse auf lib Ordner erstellen und überschreiben ersinnen Ausfall

class CustomFailure < Devise::FailureApp 


    def redirect_url 

    if request.referrer.include? new_user_session_path.split("/").last 
     new_user_session_path 
    else 
     admin_login_path 
    end 
    end 

    def respond 
    if http_auth? 
    http_auth 
    else 
    redirect 
    end 
end 

Und setzen diese config/initializers/devise.rb

config.warden do |manager| 
    manager.failure_app = CustomFailure 
    end 

unterhalb der Linie bei config/application.rb setzen

config.autoload_paths << Rails.root.join('lib') 
Verwandte Themen