5

考案するための非常に単純な戦略を追加しようとしていますが、機能していないようです。これが私が使用しようとしているコードです

#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

このコードは、「auto_login」パラメーターのパラメーターをチェックし、存在する場合は、最初にログインできるユーザーを見つけてログインすることになっています。基本的なテストケースを機能させるために、セキュリティ対策を完全にスキップしました。before_filter authenticate_user!(つまり)を持つコントローラにログインしようとすると、ログインlocalhost:3000/test?auto_login=trueできず、ログイン ページにリダイレクトされます。私は何を間違っていますか?

4

1 に答える 1

6

Warden::Strategies に直接追加してみてください:

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

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

少し前にこれを行いましたが、結局必要なくなりました。記憶が正しければ教えてください。

于 2011-02-03T15:06:08.343 に答える