Question

J'utilise les vues de django.contrib.auth.views.login and de .logout. Très pratique, travaillé hors de la boîte, déploierait à nouveau AAA +, etc.

Le problème se pose depuis que je ne suis pas en utilisant une page de connexion séparée, mais je une boîte de connexion dans chaque page (sauf si l'utilisateur est connecté, bien sûr). Ainsi, lorsque la combinaison nom d'utilisateur / mot de passe est erroné, je reçois une erreur. Lequel de ces trois chemins dois-je choisir?

  • Il y a une façon secrète pour rediriger vers la prochaine non seulement en cas de succès, mais aussi en cas d'erreur. Si oui, s'il vous plaît me dire!
  • Je vous écris mon propre point de vue de connexion, mettre à utiliser le système de messagerie de Django en attendant
  • Je vous écris une page de connexion (bien, il est juste manque un modèle) pour que je puisse exploiter tout le génialité du système auth Django.
Était-ce utile?

La solution

L'une des solutions possibles (premier + troisième de choix dans votre liste):

  1. Vous devez fournir la page de connexion spéciale (à savoir définir registration/login.html) et en cas de non loged dans chaque page utilisateur normal a la forme d'ouverture de session;
  2. si les connexions des utilisateurs (normalement cette logique gérée en django.contrib.auth.views.login):
    • pour la page normale: l'utilisateur redirection vers la page d'où elle loged dans;
    • pour la page de connexion: s'il y a next param, rediriger là, d'autre redirection vers la page principale;
  3. si l'utilisateur ne parvient pas à connexion: redirect (ou redessiner) page de connexion avec des erreurs fournies;
  4. si l'utilisateur est en loged:. Page normale fournit un lien vers logout (page spéciale est toujours là en cas si l'utilisateur manque de re-connexion ou ouvrir une session via un autre compte)

Dans les pages normales, formulaire de connexion doit avoir quelque chose comme ça <input type="hidden" name="next" value="{{ request.path }}" />.

Dans les paramètres du projet:

# 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. .: Je ne pas utiliser de django buildin vue logout au lieu que j'utiliser mon propre: presque le même, mais ne que pour les demandes fermeture de session POST. Ainsi, les utilisateurs de ne permettant pas à <img src='my_site/logout' /> par déconnexion du code malveillant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top