Frage

Ich verwende die django.contrib.auth.views.login and .logout Ansichten. Sehr praktisch, die Box ausgearbeitet, würde einsetzen wieder AAA + usw.

Das Problem entsteht, da ich keine separate Login-Seite verwenden, sondern habe ich ein Login-Feld auf jeder Seite (es sei denn, der Benutzer angemeldet ist, natürlich). Und so, wenn der Benutzername / Passwort-Kombination falsch ist, ich einen Fehler. Welche dieser drei Wege soll ich wählen?

  • Es gibt einen geheimen Weg zum nächsten nicht nur auf Erfolg zu umleiten, sondern auch auf Fehler. Wenn ja, bitte sagen Sie mir!
  • Ich schreibe meine eigene Login-Ansicht, Putting Djangos Nachrichtensystem in der Zwischenzeit verwenden
  • Ich schreibe eine Login-Seite (na ja, es ist nur eine Vorlage fehlt), damit ich die volle awesomeness des Auth-Systems Django ausnutzen kann.
War es hilfreich?

Lösung

Eine der möglichen Lösungen (erste + dritte Wahl in der Liste):

  1. Sie haben spezielle Anmeldeseite zur Verfügung zu stellen (das heißt definieren registration/login.html) und für nicht loged in Benutzer jede normale Seite hat Login-Formular;
  2. Wenn Benutzeranmeldungen normalerweise (diese Logik in django.contrib.auth.views.login behandelt werden):
    • für normale Seite: Umleitung Benutzer auf die Seite, von wo aus sie loged in;
    • für Login-Seite: Wenn es next param ist, leitet es, sonst Umleitung zur Hauptseite;
  3. , wenn der Benutzer nicht auf Login: Umleitung (oder neu zu zeichnen) Login-Seite mit Fehlern versehen ist;
  4. , wenn Benutzer loged in:. Normaler Seite einen Link zu logout bietet (Spezialseite gibt es noch den Fall, wenn der Benutzer will ein anderes Konto neu anmelden oder einloggen durch)

Im normalen Seiten, Login-Formular so etwas wie diese <input type="hidden" name="next" value="{{ request.path }}" /> haben sollte.

Projekteinstellungen:

# in settings.py
LOGIN_URL = '/login'     # this should coinside with url pattern of login view
LOGOUT_URL = '/logout'   # same but for logout view
LOGIN_REDIRECT_URL = '/' # url to main page

N. B .: I Djangos buildin Abmelde Ansicht nicht statt verwende ich meine eigene benutzen fast das gleiche, aber tut logout nur für POST-Anfragen. Diese Verbietet Benutzer abzumelden von <img src='my_site/logout' /> bösartigem Code.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top