Ich möchte eine benutzerdefinierte Authentifizierungsstrategie für den Zugriff auf die API erstellen. Ich folgte dem Beispielcode unter Devise ignoring custom strategy.Devise ignorieren meine benutzerdefinierte Strategie
Das Problem ist, dass die gültige? Methode in meiner Api-Strategie wird nie ausgeführt (basierend auf versuchen, in es zu hauen).
Mein Code:
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
und in der devise initializer:
config.warden do |manager|
manager.default_strategies.unshift :api
end
Was immer ich tun, scheint es wie immer seine Devise Strategie Standard verwenden. AFAIK, das sollte genug sein ...
------- -------- EDIT
ich die Strategie, wie diese erfordern an der Spitze meiner devise initializer:
Ich weiß, dass die Strategie beim Booten geladen wird, da, wenn ich einen Aufruf in die Klasse setzen, wird es eine Sitzung starten. Aber die Pry-Aufrufe innerhalb der Methoden werden nie ausgeführt. : -S
Ich habe diese Linie an der Spitze des Geräteinitialisierers: erfordern Rails.root.join ('app/devise/strategies/api ') und wenn ich innerhalb der Strategie einen Aufruf hinzufüge, wird dieser geladen, wenn die Rails-App gestartet wird. ABER alle Pry Calls, die ich innerhalb des gültigen habe? Methode wird nie aufgerufen. – Alain