J'ai été cogner la tête contre celui-ci pour quelques jours maintenant:RoR: AuthenticatedSystem pas correctement redirigeront sur Safari
J'ai une application utilisant RoR AuthenticatedSystem pour exiger l'authentification pour certaines des ressources. Un before_filter vérifie si l'utilisateur s'est connecté. Sinon, il saisit request.request_uri et le place dans une variable de session (session [: return_to]), puis envoie l'utilisateur à la page de connexion via un message de redirection 302. Ensuite, après la connexion, l'utilisateur est redirigé vers l'URL de session [: return_to].
Cela fonctionne très bien dans IE et Firefox. Dans Safari, request.request_uri sur le before_filter initial est vide et le contrôleur de session redirige toujours vers la page principale.
Est-ce que quelqu'un a déjà rencontré ça? Le seul indice que j'ai est que l'inspecteur Web pour Safari ne montre même pas la demande pour la page initiale, seulement la demande pour la connexion. Dans Firefox, je vois les deux demandes.
Voici le before_filter:
def login_required
if !authorized?
session[:return_to] = request.request_uri
redirect_to new_session_path
end
end
Voici la session/créer:
def create
self.current_user = User.authenticate(params[:login], params[:password])
if logged_in?
if params[:remember_me] == "1"
current_user.remember_me unless current_user.remember_token?
cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at }
end
redirect_back_or_default('/')
flash[:notice] = "Logged in successfully"
else
flash.now[:error] = "Authentication failed."
render :action => 'new'
end
end
Toutes les idées?