API にアクセスするためのカスタム認証戦略を作成したいと考えています。カスタム戦略を無視して、Deviseのサンプル コードに従いました。
問題は有効なのですか?私のApi戦略のメソッドは決して実行されません(それをこじ開けようとすることに基づいています)。
私のコード:
module Devise
module Strategies
class Api < Devise::Strategies::Base
def valid?
binding.pry
params[:request_source] == 'api'
end
def authenticate!
#do stuff here
if user
success!(user)
else
warden.custom_failure!
render :json=> {:success=>false, :message=>"Error with your login or password"}, :status=>401
end
end
end
Warden::Strategies.add(:api, Devise::Strategies::Api)
end
end
そしてデバイス初期化子で:
config.warden do |manager|
manager.default_strategies.unshift :api
end
私が何をしても、Devise は常にデフォルトの戦略を使用しているようです。私の知る限り、これで十分なはずです...
- - - -編集 - - - -
デバイス初期化子の一番上に、次のような戦略が必要です。
require Rails.root.join('app/devise/strategies/api')
クラス内に pry 呼び出しを配置すると、pry セッションが開始されるため、戦略がブート時にロードされることはわかっています。ただし、メソッド内の Pry 呼び出しは実行されません。:-S