定制omniauth的监督策略

时间:2014-05-28 17:28:57

标签: ruby-on-rails devise omniauth warden

我正在使用设计来验证Facebook的用户,我正在尝试设置Facebook取消授权的处理。

我有一个名为authorized的属性的用户模型,当用于取消授权的facebook回调发生时,该属性会更新。所有这些都有效。

我想将warden策略子类化为包括检查用户的授权状态,但是我无法弄清楚哪个warden策略要子类化。

如果我删除了设计提供的所有其他身份验证选项,只需使用

devise :omniauthable, omniauth_providers: [ :facebook ]

我运行Warden::Strategies.send(:_strategies)时没有定义看守策略。

我应该将哪种warden策略子类化以获得omniauth行为?

1 个答案:

答案 0 :(得分:2)

我认为没有针对omniauth的具体策略。反正我也看不到一个。但是,如果您要检查每个请求的属性(例如,他们在登录时取消授权您的应用),那么您应该覆盖用户模型中的active_for_authentication?。这被称为lib/devise/hooks/activatable.rb中Warden钩子代码检查每个请求的一部分。不要忘记拨打super并根据需要实施非活动消息。请参阅doc:

http://rubydoc.info/github/plataformatec/devise/master/Devise/Models/Authenticatable