Selon docs J'ai implémenté l'authentification. Voici mon application_controller.rb
OmniAuthGoogleOAuth2 dans Rails 4 rediriger vers l'URL de demande d'origine après la connexion réussie
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
helper_method :current_user
before_action :auth_user
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
private
def auth_user
current_user
if @current_user.nil?
flash[:notice] = "You need to be logged in to access this part of the site"
redirect_to root_path(url: request.url)
end
end
end
Je me sers de ce "Connexion" lien
<%= link_to "Sign in with Google", "/auth/google_oauth2?url=#{@url}", id: "sign_in" %>
L'itinéraire: get 'auth/:provider/callback', to: 'user_sessions#create'
Le contrôleur:
class UserSessionsController < ApplicationController
skip_before_filter :auth_user
def create
url = params[:url]
auth = env["omniauth.auth"]
if auth
user = User.from_omniauth(auth)
session[:user_id] = user.id
flash[:notice] = "Login Sucessful!"
redirect_to url
else
flash[:notice] = "error"
redirect_to root_path
end
end
def destroy
session[:user_id] = nil
redirect_to root_path
end
end
Maintenant, quand je sans une session valide essayez d'aller à localhost:3000/privileged
Je suis redirigé vers e URL racine et le lien de connexion est la suivante:
http://localhost:3000/auth/google_oauth2?url=http://localhost:3000/privileged
Cependant quand je clique, je reçois une connexion réussie mais une erreur que je ne peux pas rediriger à zéro. Pourquoi le paramètre est-il abandonné? Ou existe-t-il un meilleur moyen de rediriger l'utilisateur vers l'URL initialement demandée après une connexion réussie en général?