Rails - Bei Anmelde- / Authentifizierungsfehlern wird das Fehler-Array nicht mit Nachrichten gefüllt

8

Verwenden von Rails 3.07 und Devise 1.1.5

Alles funktioniert gut und wie erwartet mit einer Ausnahme. Wenn ein Benutzer beispielsweise versucht, sich mit einem gefälschten Kennwort anzumelden, verweigert Devise den Anmeldeversuch, der zwar korrekt ist, jedoch keine Fehlermeldung liefert.

Ich habe mehrere Fehleranzeige-Methoden in app / helpers / devise_helper.rb eingerichtet und verwende eine namens devise_sign_in_error_messages! für die Login-Ansicht. Daher kann ich überprüfen, ob die folgende Zeile dieser Funktion in diesem Fall eine leere Zeichenfolge für Fehler zurückgibt:     return "" wenn resource.errors.empty?

Wenn ich einen korrekten Benutzernamen und ein richtiges Passwort gebe, meldet mich das System gut an, also scheint die ganze Logik der Devise gut zu sein, es ist nur das Fehlen einer Fehlermeldung, die ein Mysterium ist.

Was muss ich ändern, um zu helfen? Übergeben Sie mir eine Fehlermeldung bei fehlgeschlagener Anmeldung?

BEARBEITEN:

Die Antwort lautet: a) das Gerät hält die Antwort im Flash fest b) obwohl es im Flash ist, verwendet es nicht den Schlüssel, den Sie erwarten könnten

Mit diesem Code kann ich die Nachricht sehen:

%Vor%

Was mir auf einem anderen Beitrag als Antwort auf eine andere Frage begegnet ist: Ein weiterer Stack-Überlauf-Beitrag

Ich hatte versucht, das Flash früher auszugeben, aber die Nachricht wurde nicht angezeigt, weil ich ein wenig Code von einem anderen Stack-Überlauf-Post gefolgt war, der unzureichend zu sein scheint. Nämlich, ich hatte es versucht:

%Vor%

Devise verwendet diese Schlüssel nicht für die Login-Fehlermeldung, damit Ihnen dieser Code nichts bringt.

Ich finde den Umgang mit dem Gerät uneinheitlich. Genauer gesagt, wenn ich die vergessene Passwort-Option von devise wähle und zum Beispiel eine gefälschte E-Mail-Adresse eintrage, wird der Fehler in das Array resource.errors zurückübertragen, aber hier mit dem schlechten Login wird er im Flash übergeben.

    
Masterchief 30.08.2011, 19:42
quelle

1 Antwort

15

Wie Sie festgestellt haben, verwendet Devise nicht flash[:message] , flash[:warning] und flash[:error] .

Devise verwendet flash[:notice] und flash[:alert] .

Es ist nicht einfach in der Dokumentation zu finden, ist aber nur unter dem dritten Punkt in Konfigurieren von Controllern .

Hoffe, dass dies die Dinge aufklärt.

    
Phil Dudley 06.04.2012 17:17
quelle

Tags und Links