Ich füge die Authentifizierung einem bestehenden Pyramidenprojekt hinzu. Die einfachste Form, die ich derzeit versuche (wird später erweitert) ist, dass alle Seiten HTTPForbidden auslösen. Die Ausnahmeansicht ist/login, die nach Anmeldedaten fragt und bei Erfolg HTTPFound mit request.referer als Speicherort zurückgibt.Wie man request.referer value von einer Weiterleitung nach einer fehlgeschlagenen Anmeldung hält
So weit so gut, das macht was ich will, was die Benutzer zurück auf die Seite bringt, auf die sie zugreifen wollten, wenn die Login-Seite sie unterbrach. Lassen Sie uns diese Seite anrufen.
Die Anmeldeseite ist ein einfaches HTML-Formular mit einem Absenden-Button.
Wenn jedoch der Benutzer Benutzername oder Passwort falsch eingibt, möchte ich auf die Anmeldeseite mit der Fehlermeldung "Falsches Passwort" oder ähnliches zurückkehren. Wenn dies geschieht, ist request.referer jetzt die Anmeldeseite statt Seite A.
Wie "speichere" ich Seite A (oder besser gesagt seine URL), so dass, wenn der Benutzer schließlich erfolgreich einloggen, sie sich finden zurück auf Seite A? Wird die Sitzung für solche Dinge verwendet, und gibt es Nicht-Session-Möglichkeiten, sie zu implementieren? Ich habe (noch) keine Sitzung für diese einfache Seite und versuche, das Hinzufügen verschiedener Komponenten in einem Durchgang zu vermeiden.
Danke für die schnelle Antwort. Viel einfacher als ich erwartet hatte. Die einzige Unannehmlichkeit, die ich habe, ist, wie dies (mit _query) Benutzer sichtbar in der URL ist und würde daher zusätzliche Validierung benötigen (z. B. wenn jemand kopiert die URL aber nur unvollständig) –
Ich habe die Antwort bearbeitet, um Ihre Bemerkung aufzunehmen. Wenn meine Antwort zu Ihnen passt, lasse ich sie als "akzeptiert" markieren;) – LiGhTx117
Stellen Sie sicher, dass der übergebene Parameter * next * durch 'is_safe_url' überprüft wird. Andernfalls können Sie etwas wie javascript: alert ('xxx') weitergeben und dann diese potentielle XSS-Schwachstelle auf Ihrer Website öffnen. Schau dir Django für Inspiration an https://docs.djangoproject.com/en/1.9/_modules/django/utils/http/ –