Ich frage mich, wie Sie eine benutzerdefinierte Authentifizierungsstrategie mit dem Gerät unter Verwendung devise :token_authenticable
implementieren.Benutzerdefinierte Authentifizierungsstrategie für die Verwendung von: token_authenticable
Ich habe bereits Anweisungen gefunden, wie man es mit einem Modell unter Verwendung devise :database_authenticatable
macht, das here abgedeckt wird.
Das Modell, das versucht, sich zu authentifizieren, heißt Pupil
. So, hier ist meine aktuelle Strategie (in 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
Und in meinem config/initializers/devise.rb
(versuchte es auch ohne :scope => :pupil
):
config.warden do |manager|
manager.default_strategies(:scope => :pupil).unshift :auth_pupil_strategy
end
So soll dies der Benutzer führt nicht in der Lage beeing Login, aber irgendwie wird diese Strategie nicht angewendet, wenn von devise :database_authenticatable
zu devise :token_authenticable
gewechselt wird.
Vielleicht fehlt mir gerade das richtige :scope
hier.
Jetzt ist das Merkwürdige: Wenn ein Benutzer ein ungültiges Token eingibt, wird meine Strategie aufgerufen und "SIE WERDEN NICHT ÜBERTRAGEN!" ist zurück gekommen. Wenn jedoch das korrekte Token bereitgestellt wird, kann sich der Benutzer problemlos anmelden.
Schade, dass niemand war abl e, um Ihnen dabei zu helfen. Konnten Sie eine Lösung finden? – seanhussey
vielleicht http://kyan.com/blog/2013/10/11/devise-authentication-strategien helfen? –
Sie müssen ein 'gültig?' Methode für Ihre Strategie. Ich weiß nicht, ob das irgendetwas löst, aber es ist sicher eine Voraussetzung für jede Strategie (siehe zum Beispiel John Beynons Link). – conciliator