我在想如何使用devise :token_authenticable
設計實現自定義身份驗證策略。用於設計的自定義身份驗證策略使用:token_authenticable
我已經找到了關於如何使用devise :database_authenticatable
的模型來做到這一點的說明,它覆蓋了here。
im試圖驗證的模型名爲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
所以這應該會導致用戶不beeing能夠登錄,但不知何故,當從devise :database_authenticatable
切換到devise :token_authenticable
時,此策略不適用。
也許我只是在這裏錯過了正確的:scope
。
現在,這裏是奇怪的事情:每當用戶輸入一個無效的標記,我的策略被調用,並且「你不應該通過!」返回。 但是,當提供正確的標記時,用戶可以很好地登錄。
恥辱,沒有人ABL e幫助你解決這個問題。你能找到解決方案嗎? – seanhussey 2013-09-16 15:05:13
也許http://kyan.com/blog/2013/10/11/devise-authentication-strategies會有幫助嗎? – 2013-10-11 16:05:29
你必須實施'有效?'你的策略的方法也是如此。我不知道這是否會解決任何問題,但它肯定是任何策略的先決條件(請參閱John Beynon的鏈接)。 – conciliator 2014-01-28 20:40:33