devise :token_authenticable
を使用して、deviseでカスタム認証戦略を実装する方法が不思議です。Deviseのカスタム認証戦略:token_authenticable
devise :database_authenticatable
(here)を使用してモデルを作成する方法については既に説明しました。
認証しようとしているモデルの名前は、Pupil
です。
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/initializers/custom_auth.rb
にあります)私の現在の戦略である
config.warden do |manager|
manager.default_strategies(:scope => :pupil).unshift :auth_pupil_strategy
end
だからこれは、ユーザーにつながるはずできbeeingていませんログインするには、devise :database_authenticatable
からdevise :token_authenticable
に切り替えると、この戦略は適用されません。
多分、私はちょうど右の:scope
が不足しています。
ここでは奇妙なことがあります:ユーザーが無効なトークンを入力するたびに、私の戦略が呼び出され、「あなたは合格してはいけません!返されます。 しかし、正しいトークンが提供された場合、ユーザーはきちんとログインすることができます。
恥を支援しますablあなたにこれを手伝ってもらう。あなたは解決策を見つけることができましたか? – seanhussey
多分http://kyan.com/blog/2013/10/11/devise-authentication-strategiesが役立ちますか? –
あなたは 'valid?'を実装する必要があります。あなたの戦略のための方法。それが何かを解決するかどうかはわかりませんが、確かにあらゆる戦略の前提条件です(例えば、John Beynonのリンクを参照してください)。 – conciliator