2008-11-07 7 views
2

Est-il possible de s'assurer qu'un utilisateur est connecté une seule fois?Authentification de l'utilisateur dans Django

Je voudrais éviter que deux personnes différentes se connectent au système avec le même nom d'utilisateur/mot de passe.

Je suppose que je pourrais le faire moi-même en vérifiant dans la table django_session avant de se connecter à l'utilisateur, mais je préfère utiliser le framework, s'il existe déjà une telle fonctionnalité.

Cheers,

Merci pour les réponses!

Répondre

5

La connexion deux fois est ambigu sur HTTP. Il n'y a pas de signal de "déconnexion" envoyé. Vous pouvez frustrer les gens si vous ne faites pas attention.

Si j'arrête mon navigateur et dépose les cookies - accidentellement - je pourrais être empêché de me reconnecter.

Comment le serveur pouvait-il savoir que c'était moi qui essayait de me reconnecter alors que moi essayais de me connecter deux fois?

Vous pouvez essayer des choses comme vérifier l'adresse IP. Et si la déconnexion accidentelle était mon routeur plante, libérant mon bail DHCP? Maintenant, j'essaie de me reconnecter, mais j'ai une nouvelle adresse et aucun cookie établi. Je n'essaie pas de créer une deuxième session, j'essaie juste de revenir après que ma session actuelle soit déconnectée. En fait, il n'y a pas de règle bien établie pour les "sessions uniques" qui peuvent être installées dans un framework. Vous devez créer une règle appropriée à votre application et déterminer comment l'appliquer.

+0

Je pensais à quelque chose comme ce qui suit: 1-Vérifier django_session pour l'utilisateur actif 2-S'il y en a un: Présenter un avertissement "Il y a un autre utilisateur [bla, bla] si vous voulez continuer l'autre utilisateur être déconnecté " Donc, si l'utilisateur est" légitime ", il ne sera ennuyé qu'une seule fois. – MrM

+0

Je pense que S.Lott a raison: la nature sans état de HTTP rend le concept d'utilisateur connecté assez vague. –

+0

@mFunk: Votre approche pourrait fonctionner pour votre communauté d'utilisateurs. Cependant, il n'y a pas de réponse «standard», «typique» ou «supportée par le cadre». –

4

Un site que j'ai fait l'année dernière craignait que les noms d'utilisateur/mots de passe pourraient être affichés sur un forum. Je me suis occupé de cela en ajoutant un modèle et une vérification à la vue de connexion qui a regardé combien d'IP uniques le nom avait été utilisé au cours des X dernières heures. J'ai donné deux valeurs aux administrateurs du site dans settings.py pour ajuster le nombre d'heures et le nombre d'adresses IP uniques. Si un nom était "surutilisé", il était bloqué pour les connexions de nouvelles adresses IP jusqu'à ce que le temps soit passé en dessous du seuil. À leur grande surprise, ils ont eu un seul nom qui a déclenché le blocage au cours de la dernière année et qui s'est avéré être le président de l'entreprise qui était en voyage d'affaires et continuait de se connecter à partir de nouveaux emplacements.

Ps. Le code est simple. Envoyez-moi un courriel à peter à techbuddy dot nous si vous le souhaitez.