Estoy implementando un sitio web como mi proyecto final y quiero mostrar un mensaje para los usuarios que no pudieron iniciar sesión más de 3 veces para que restablezcan sus contraseñas.
Ya probé diferentes soluciones que encontré en línea, pero nada está ayudando.
Estoy escribiendo el backend en Django, pero Django-axes tampoco funcionó para mí, así que ahora estoy probando JS.
<script type="text/javascript"> var login_attempts = 3; function checkAttempts() { var failed_alert = document.querySelectorAll("a")[0].textContent; if (failed_alert === " Invalid username or password ") { login_attempts--; console.log(login_attempts); alert('failed login') if (login_attempts==0) { alert("Do you want to reset your password?"); } } else { console.log(login_attempts); return false; } } </script>Este es el ejemplo que encontré en Stack Overflow. Creo que estoy cerca de solucionar este problema, recibo mensajes, pero al imprimir "login_attemps" en una consola al principio obtengo 3 y luego continuamente 2, sin importar cuántas veces escriba una contraseña incorrecta.
La función se llama en forma. También traté de hacerlo en body onload=""
<form id="login-form" class="form" action="login" method="post" onsubmit="checkAttempts();">Toda la autenticación se implementa en views.py django:
def login(request): if request.user.is_authenticated: return redirect('/') else: if request.method == 'POST': username = request.POST['username'] password = request.POST['password'] user = auth.authenticate(username=username, password=password) if user is not None: auth.login(request, user) return HttpResponseRedirect(request.GET.get('next', LOGIN_REDIRECT_URL)) else: messages.info(request, 'Invalid username or password') return redirect('login.html') else: return render(request, 'login.html')Siento que estoy perdiendo mis ideas. Estuve tratando de resolver esto durante 2 semanas sin efectos. Si alguien tiene alguna idea, se lo agradecería. Puede ser tanto en js como en django.
yo esperaria algo como
document.getElementById('login-form').addEventListener('submit', function(e) { e.preventDefault(); fetch('login', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ 'username': this.username.value, 'password': this.password.value }) }) .then((response) => response.json()) .then((data) => { console.log('Success:', data); // here we are logged in }) .catch((error) => { console.error('Error:', error); }); });