Как добавить стратегию в Devise - PullRequest
5 голосов
/ 27 августа 2010

Я пытаюсь добавить действительно простую стратегию, и она, похоже, не работает. Вот код, который я пытаюсь использовать

#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), он не может войти в систему и перенаправляет меня на страницу входа. Что я делаю не так?

1 Ответ

6 голосов
/ 03 февраля 2011

Вы можете попробовать добавить его непосредственно в Warden :: Strategies:

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

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

Я сделал это некоторое время назад, но потом мне это не понадобилось. Дайте мне знать, если я правильно запомнил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...