J'essaie d'obtenir un formulaire de connexion que j'ai dans Django pour permettre uniquement trois tentatives de connexion avant de rediriger une page "Aide de connexion". J'utilise actuellement la vue intégrée "django.contrib.auth.views.login" avec un modèle personnalisé. Comment puis-je forcer à rediriger à une autre page après les tentatives de connexion sans échec? P>
3 Réponses :
Vous pouvez enregistrer une session si l'utilisateur n'a pas réussi à vous connecter. et s'ils ne parviennent pas à se connecter à nouveau p> request.SESSioN['login_tries'] = 2
La session n'existera que si le client envoie des en-têtes de cookie, qu'un attaquant de force brute ne fera pas. Il serait préférable de relier les tentatives de connexion avec un compte utilisateur spécifique ou un client spécifique (ou les deux).
Il y a en fait un projet là-bas qui fournit un middleware Django à faire juste ceci, appelé django- Axes code> . Il suffit de l'installer avec les instructions fournies, puis définissez axes_login_failure_limit code> au nombre de tentatives de connexion que vous souhaitez avant qu'un enregistrement soit créé pour les connexions défaillantes. Vous devrez toujours vérifier cet enregistrement lorsque vous souhaitez verrouiller quelqu'un, cependant. P>
Merci Daniel. J'ai choisi la réponse de Dotty car il était plus proche de la méthode que j'ai fini par utiliser. Une partie de la question était ma propre inexpérience avec Python et Django et, en tant que tel, je n'avais pas assez de connaissances pour poser la bonne question. Je pense que votre réponse aurait été aussi bonne si elle ne serait pas meilleure si je voulais quelque chose avec de nombreuses fonctionnalités, et je pourrais bien mettre fin à l'utilisation de l'utilisation lorsque je suis plus familier avec le cadre.
Pas de soucis, je voulais juste vous faire savoir qu'il y avait déjà une solution qui pourrait potentiellement fonctionner. Je ne savais pas que cela existait non plus alors j'ai appris quelque chose dans le processus aussi!
J'utilise django-frein code> et memcached
Django-frein n'est plus activement entretenu.