2010-08-27 5 views
4

J'essaie d'ajouter une stratégie très simple à concevoir, et cela ne semble pas fonctionner. Voici le code que je suis en train d'utiliserComment ajouter une stratégie à Devise

#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 les params pour un paramètre « AUTO_LOGIN », et le cas échéant, trouver le premier utilisateur qu'il peut et les connecter. Je sautée mesures de sécurité entièrement pour faire fonctionner un cas de test de base. Lorsque j'essaie de me connecter à un contrôleur qui a un 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 mal?

Répondre

6

Vous pouvez essayer d'ajouter directement à Warden :: Stratégies:

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

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

Je l'ai fait il y a un certain temps, mais a fini par ne pas en avoir besoin. Faites-moi savoir si je m'en suis souvenu correctement.

+0

Voir aussi les réponses ici: http://stackoverflow.com/questions/4223083/custom-authentication-strategy-for-devise – shawn42

Questions connexes