web-dev-qa-db-fra.com

Rediriger après connexion avec Devise

Est-il possible de rediriger les utilisateurs vers différentes pages (en fonction du rôle) après s'être connecté avec Devise? Il semble seulement rediriger vers la racine: vers => ... page définie dans routes.rb

Merci!

27
rsl

Par défaut, Devise route vers root après ses actions. Il y a un bel article sur la substitution de ces actions sur le Wiki Devise, https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful -sign-in

Ou vous pouvez aller encore plus loin en définissant stored_locations_for(resource) sur nil, puis avoir des redirections différentes pour chaque action, c'est-à-dire: after_sign_up_path(resource), after_sign_in_path(resource) et ainsi de suite.

29
janders223

vous pouvez simplement ajouter cette méthode à votre contrôleur d'application

def after_sign_in_path_for(resource)
  user_path(current_user) #your path
end
16
Asnad Atta

collez uniquement le code ci-dessous sur le contrôleur d'application ou n'importe quel contrôleur, vous devez effectuer l'opération;

def after_sign_in_path_for(resource)
    users_path
end
2
Anoob K Bava

Devise a une méthode d'assistance (after_sign_in_path_for) qui peut être utilisée pour remplacer la route par défaut de Devise à la racine après la connexion/connexion.

Pour implémenter une redirection vers un autre chemin après la connexion, ajoutez simplement cette méthode à votre contrôleur d'application.

#class ApplicationController < ActionController::Base
def after_sign_in_path_for(resource)
  users_path
end

Où chemin_utilisateurs est le chemin vers lequel vous souhaitez qu'il redirige, tilisateur est le nom du modèle qui correspond au modèle pour Devise.

N/B: Si vous avez utilisé Admin comme nom de modèle pour Devise, il sera

#class ApplicationController < ActionController::Base
def after_sign_in_path_for(resource)
  admins_path
end

C'est tout.

j'espère que cela aide

1
Promise Preston

https://github.com/heartcombo/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-in,-sign-up,-or-sign -out

J'ai utilisé l'exemple 1:

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception

  before_action :authenticate_user!

  protected

  def after_sign_in_path_for(resource)
    current_user.is_a?(Admin) ? admin_tests_path : (stored_location_for(resource) || root_path)
  end
end
0
shilovk