我想知道如何使用设计实现自定义身份验证策略devise :token_authenticable
。
我已经找到了有关如何使用此处devise :database_authenticatable
介绍的模型的说明。
我试图验证的模型名为Pupil
。所以这是我目前的策略(位于config/initializers/custom_auth.rb
):
Warden::Strategies.add(:auth_pupil_strategy) do
# missing valid? method indicates this strategy is always applied
def authenticate!
fail!("YOU SHALL NOT PASS!")
end
end
在我的config/initializers/devise.rb
(也没有尝试过:scope => :pupil
):
config.warden do |manager|
manager.default_strategies(:scope => :pupil).unshift :auth_pupil_strategy
end
所以这应该会导致用户无法登录,但不知何故,这种策略在从 切换devise :database_authenticatable
到时不适用devise :token_authenticable
。
也许我只是错过了:scope
这里的权利。
现在,奇怪的是:每当用户输入无效的令牌时,我的策略就会被调用并且“你不能通过!” 被退回。但是,当提供正确的令牌时,用户可以正常登录。