Ich habe eine recht normale Devise-Login-Prozedur mit:
Anzeigen:
Ressourcenname,: url = & gt; session_path (resource_name)) do | f | % & gt; %Vor%Und ich habe gerade einen Sitzungscontroller erstellt, um die E-Mail herunterzuladen:
%Vor%Ein Login mit guten Anmeldeinformationen passiert gut.
Bei falschen Anmeldedaten wird auf die Anmeldeseite mit diesem Protokoll umgeleitet:
%Vor%Anscheinend wird die 401 von Warden fallengelassen, aber ich konnte nicht herausfinden warum. Der Benutzer wird korrekt zurück auf die Anmeldeseite umgeleitet, aber es wird keine Fehlermeldung angezeigt (was normal ist, da sie durch die Weiterleitung gelöscht werden)
Was mache ich falsch?
Danke!
EDIT 1:
Für den Moment habe ich einen schnellen Hack gefunden. Ich habe das in SessionsController # new
hinzugefügt %Vor%Nicht sehr elegant, aber zumindest habe ich etwas.
Ihre Flash-Nachricht wird nicht gesetzt, weil Devise::SessionsController#create
den Warden für die Authentifizierung aufruft, die im Falle eines Fehlers Devise::FailureApp
aufruft. Ihr Controller behandelt niemals die Fehlerszenarien.
Wenn Sie eine benutzerdefinierte Nachricht haben möchten, können Sie die Fehler-App dafür anpassen. Es gibt einige Artikel im Devise-Wiki erklären, wie man das macht.
Aber im Allgemeinen können Sie Ihre Fehlermeldungen über I18n anpassen und es gibt wahrscheinlich einen besseren Weg, um das zu erreichen, was Sie wollen, ohne Devise Controller zu überschreiben.
Zunächst rate ich Ihnen, die Devise-Controller nicht zu übersteuern:
create
-Methode zu überschreiben. Außerdem sollte Devise einen Flash-Fehler automatisch einstellen, stellen Sie sicher, dass Sie ihn in Ihrer Ansicht anzeigen.
Der Statuscode 401 ist nur eine Standardantwort für nicht autorisierte Anfragen.
401 Unauthorized ist ähnlich wie 403 Forbidden, aber speziell zur Verwendung wenn eine Authentifizierung erforderlich ist und fehlgeschlagen ist oder noch nicht erfolgt ist bereitgestellt
Sie sollten definitiv in Erwägung ziehen, Ihren benutzerdefinierten Controller zu löschen,
Prost
Ich stimme jassa zu, aktualisieren Sie einfach Ihre Version von Devise (mit bundle update devise
).
Groß- und Kleinschreibung in E-Mails ist in Devise bereits vorhanden, stellen Sie sicher, dass Sie diese Konfiguration haben:
%Vor%In jedem Fall, da Sie anscheinend einige Flash-Nachrichten und diese Konfiguration vermissen, wäre es vielleicht besser, wenn Sie den Generator einfach erneut ausführen:
%Vor%Sie sollten Devise einige Dateien überschreiben lassen, stellen Sie sicher, dass Sie zuerst Ihre Dateien sichern.
Tags und Links ruby-on-rails devise warden