我正在努力替换 Padrino-Warden gem 的默认 :password 策略。我认为我需要为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}
如果我在 config.ru 中配置warden,它将为warden 设置正确的环境,但是我怀疑Padrino 提供的会话中间件不能与Warden 一起很好地工作。