Заменить стратегию аутентификации по умолчанию в Padrino-Warden

Я изо всех сил пытаюсь заменить стратегию :password по умолчанию для драгоценного камня Padrino-Warden. Насколько я понимаю, мне нужно получить экземпляр менеджера для надзирателя, чтобы я мог установить стратегии по умолчанию, но я не уверен, как это сделать в файле app.rb.

Сейчас app.rb выглядит так

register Padrino::Warden

Warden::Strategies.add(:udid) do
    def valid?
      puts "udid strat"
      params[:udid]
    end

    def authenticate!
      user = User.get(:udid => params[:udid])
      user.nil? ? fail!("Could not log in") : success!(user)
    end
end

Warden::Manager.serialize_into_session do |user|
  user.id
end

Warden::Manager.serialize_from_session do |id|
  User.get(id)
end

use ::Warden::Manager do |manager|
     manager.scope_defaults :default, 
      strategies: [:password], 
      action: 'sessions/unauthenticated'
end

Что не работает. Окружение надзирателя по-прежнему выглядит так

Warden::Proxy:70352196940440 @config={:default_scope=>:default, :scope_defaults=>{}, :default_strategies=>{:_all=>[:password]}, :intercept_401=>true, :failure_app=>Dagis}

Если я настрою warden на config.ru, он установит правильную среду для warden, но тогда я подозреваю, что промежуточное программное обеспечение сеанса, предоставляемое Padrino, не работает вместе с Warden.


person Erik Johansson    schedule 14.02.2013    source источник


Ответы (1)


Вам нужно проинструктировать начальника надзирателя, когда использовать стратегию. Обновите ключ strategies, который вы передаете методу use, чтобы указать, какие стратегии вы хотите включить, и порядок их выполнения. Вы можете сделать это:

use ::Warden::Manager do |manager|
  manager.scope_defaults :default, 
    strategies: [:udid, :password], 
    action: 'sessions/unauthenticated'
end

На вики Warden на github есть куча примеров.

person rossta    schedule 14.02.2013
comment
Спасибо за ответ. В конце концов, проблема, похоже, была с падрино-надзирателем, у которого было слишком много предположений о конфигурации. Удалил его, и использование только Стража работает как шарм. - person Erik Johansson; 14.06.2013