2017-12-16 1 views
0

Ruby on Rails, Verwenden von Devise für die Authentifizierung. Ich verstehe, dass Devise die Deep-Link-Funktion enthält, aber der Benutzer muss zuerst zu einer URL navigieren, für die er authentifiziert werden muss.Geben Sie die Rückgabe-URL für die Geräteanmeldung als Abfragezeichenfolge ein. Parameter

Dieser Anwendungsfall entspricht nicht meinen Anforderungen, und ich frage mich, ob es eine Option gibt, einen Abfragezeichenfolgenparameter bereitzustellen, so dass der Benutzer nach dem Anmelden auf die aktuelle Seite umgeleitet wird Seite, ist aber nicht erforderlich.

Antwort

1

Sie können einfach die Devise::SessionsController erweitern, um Ihre Bedürfnisse zu erfüllen. Wenn man sich die source code aussieht, verwendet Devise after_sign_in_path_for in den Benutzer zu einem bestimmten Pfad nach einer erfolgreichen Anmeldung zu umleiten.

Unter der Annahme, die Ressource, die Sie haben, ist ein User

In Ihrem routes.rb an, welche Router Devise verwenden sollte :

:

devise_for :users, controllers: {sessions: 'sessions'} 

Dann einen Controller in app/controllers/sessions_controller, die aus Devise::SessionsController und überschreiben die after_sign_in_path_for erbt erstellen

class SessionsController < Devise::SessionsController 

    protected 

    def after_sign_in_path_for(resource)   
    params[:redirect_path].presence || stored_location_for(resource) 
    end 
end 

In Ihrer neuen Sitzung Form (app/views/devise/sessions/new.html.erb), eine versteckte Markierung hinzufügen, die die redirect_path param an die Steuerung weiterleitet:

<%= hidden_field_tag :redirect_path, params[:redirect_path].presence %> 

Nun, wenn der Benutzer besucht new_user_session_path(redirect_path: some_path), sollten sie auf den gewünschten Pfad umgeleitet werden, nachdem eine erfolgreiche Anmeldung.

Verwandte Themen