Ich habe meine eigene Authentifizierungsfunktion für meine Controller eingerichtet, die mehr als nur überprüft, ob der Benutzer angemeldet ist (wenn es sich um einen Manager usw. handelt). Das Problem, das ich gefunden habe, ist, wenn die Person nicht angemeldet ist und versucht, auf eine Seite zuzugreifen, die Authentifizierung erfordert, werden sie erfolgreich auf die Anmeldeseite umgeleitet, aber nach der Anmeldung werden sie nicht zurück auf die Seite gesendet, die sie waren Zugriff versuchen.Rails 4: Devise redirect nach dem Anmelden
Ich habe folgendes ApplicationController
hinzugefügt:
before_filter :store_location
def store_location
p "storing location"
# store last url - this is needed for post-login redirect to whatever the user last visited.
return unless request.get?
if (request.path != "https://stackoverflow.com/users/sign_in" &&
request.path != "https://stackoverflow.com/users/sign_up" &&
request.path != "https://stackoverflow.com/users/password/new" &&
request.path != "https://stackoverflow.com/users/password/edit" &&
request.path != "https://stackoverflow.com/users/confirmation" &&
request.path != "https://stackoverflow.com/users/sign_out" &&
!request.xhr?) # don't store ajax calls
session[:previous_url] = request.fullpath
end
end
def after_sign_in_path_for(resource)
session["user_return_to"] || root_path
end
def new_authorize_employee
if current_user.nil?
redirect_to new_user_session_path, notice: "You must be signed in to access this page."
else
unless current_user.is_employee?
redirect_to root_path, notice: "You do not have permissions to access this page."
end
end
end
und in der Steuerung der Benutzer zuzugreifen versucht:
class EmployeesController < ApplicationController
before_action :new_authorize_employee
...
end
aber der Benutzer immer noch auf die root_url
nach Vorzeichen umgeleitet wird in Wie ändere ich die Authentifizierungsmethode, um Weiterleitungen auf die letzte Seite zu ermöglichen, auf die der Benutzer zugreifen wollte?
Ist 'session [: previous_url]' und 'Session [ "user_return_to"]' sollte gleich sein? –
Ich glaube so nach ihrem Wiki: https://github.com/plataformatec/devise/wiki/How-To:-Redirect-back-to-current-page-after-sign-in,-sign-out,- Anmeldung, -update. Ich habe auch beide versucht –