我正在努力替换Padrino-Warden gem的默认密码策略。按照我的计算方法,我需要获取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很好地协同工作。
发布于 2013-02-14 20:26:04
您需要指示典狱长经理何时使用该策略。更新传递给use方法的strategies密钥,以反映您希望启用哪些策略以及它们的运行顺序。你可以这样做:
use ::Warden::Manager do |manager|
manager.scope_defaults :default,
strategies: [:udid, :password],
action: 'sessions/unauthenticated'
end在Warden wiki on github上有一堆例子
https://stackoverflow.com/questions/14871632
复制相似问题