5 votes

Comment ajouter une stratégie à Devise

J'essaie d'ajouter une stratégie très simple à concevoir, et ça ne semble pas fonctionner. Voici le code que j'essaie d'utiliser

#config/initializers/devise.rb
Devise.setup do |config|
  config.orm = :mongo_mapper

  config.warden do |manager|
    manager.strategies.add(:auto_login_strategy) do 
      def valid?
        params[:auto_login]
      end

      def authenticate!
        u = User.find(:first)
        u.nil? ? fail!("No created users") : success!(u)
      end
    end
    manager.default_strategies(:scope=>:user).unshift :auto_login_strategy
  end  
end

Le code est censé vérifier la présence d'un paramètre 'auto_login' dans les paramètres, et s'il est présent, trouver le premier utilisateur qu'il peut et le connecter. J'ai entièrement ignoré les mesures de sécurité pour ne faire fonctionner qu'un test de base. Lorsque j'essaie de me connecter à un contrôleur qui a un paramètre before_filter authenticate_user! (c'est-à-dire localhost:3000/test?auto_login=true ), il ne peut pas me connecter et me redirige vers la page de connexion. Qu'est-ce que je fais de mal ?

6voto

shawn42 Points 400

Vous pouvez essayer de l'ajouter directement à Warden::Strategies :

class MyStrategy
  def valid?...
  def authenticate!...
end

Warden::Strategies.add(:database_authenticatable, MyStrategy)

Je l'ai fait il y a quelque temps, mais je n'en ai finalement pas eu besoin. Dites-moi si je m'en suis bien souvenu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X