Domanda

Sto usando il punto di vista django.contrib.auth.views.login and .logout. Molto utile, ha lavorato fuori dalla scatola, sarebbe distribuire nuovamente AAA +, ecc

Il problema sorge dal momento che non sto usando una pagina di accesso separata, ma ho una casella di login in ogni pagina (a meno che l'utente è connesso, naturalmente). E così, quando la combinazione username / password è errata, ottengo un errore. Quale di questi tre percorsi devo scegliere?

  • C'è un modo segreto per reindirizzare al prossimo non solo in caso di successo, ma anche in caso di errore. Se è così, mi dica!
  • scrivo il mio punto di vista di accesso, mettendo a usare il sistema di messaggio di Django nel frattempo
  • I scrivere una pagina di login (beh, è ??solo manca un modello) in modo da poter sfruttare appieno le suggestioni del sistema di autenticazione Django.
È stato utile?

Soluzione

Una delle possibili soluzioni (primo + terze scelte nel proprio elenco):

  1. È necessario fornire pagina di login speciale (cioè definiscono registration/login.html) e per non loggate utente ogni pagina normale ha form di login;
  2. se accessi utente normalmente (questa logica gestita in django.contrib.auth.views.login):
    • per la pagina normale: utente reindirizzamento alla pagina da dove loggate;
    • per la pagina di login: se c'è next param, reindirizzare lì, altrimenti reindirizzamento alla pagina principale;
  3. Se l'utente non riesce a login: redirect (o ridisegna) pagina di login con errori forniti;
  4. Se l'utente è in loged:. Normale pagina fornisce un collegamento per la disconnessione (pagina speciale è ancora lì nel caso se di effettuare nuovamente il login o login attraverso un altro conto mancanza utente)

Nelle pagine normali, form di login dovrebbe avere qualcosa di simile <input type="hidden" name="next" value="{{ request.path }}" />.

Nel progetto impostazioni:

# 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

NB .: Non faccio uso di Django di buildin vista di logout invece io uso il mio: quasi lo stesso, ma fa il logout solo per le richieste POST. Questo non consente agli utenti di effettuare il logout per <img src='my_site/logout' /> codice dannoso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top