2017-06-09 1 views
0

Ich arbeite an einer Anmeldeseite für eine FTP-Site. Es läuft von einem Tomcat 8-Server und ist so konfiguriert, dass Benutzer nach 3 fehlgeschlagenen Versuchen für 15 Minuten gesperrt werden. Ich möchte eine Nachricht auf der Anmeldeseite anzeigen, nachdem der Benutzer gesperrt wurde. Das Problem ist, wenn die Anmeldung fehlschlägt, wird die Seite aktualisiert (leitet zurück zur Anmeldeseite), wodurch alles gelöscht wird.Versuchen, Anmeldeversuche und Benutzersperrungsnachricht nach fehlgeschlagenen Versuchen anzuzeigen

Ich habe es geschafft, eine Login-Versuche verbleibende Fehlermeldung zu bekommen, aber es funktioniert nicht 100%, weil ich es nur in einem Cookie speichern und es nicht mit dem Benutzerkonto überhaupt verbunden ist. Gibt es trotzdem einen Benutzernamen (wer meldet sich an) und ihre Login-Versuche und/oder ob sie gesperrt sind?

Deshalb möchte ich zwei Dinge anzuzeigen:

  1. Login-Versuche verbleibenden pro Benutzer
  2. Benutzer gesperrt ist, mit Benutzername

Login-Seite:

<%@page import="org.apache.catalina.User"%> 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/css/master.css"> 
     <script type="text/javascript" src="<%=request.getContextPath()%>/javascript/javascript.js"></script> 
    </head> 
    <body bgcolor="#ffffff"> 
     <div class="container" role="main"> 
      <form method="POST" action="j_security_check"> 
       <table border="0" align="center"> 
        <tr> 
         <td>Login</td> 
         <td><input id="user" type="text" name="j_username" autocomplete="off"></td> 
        </tr> 
        <tr> 
         <td>Password</td> 
         <td><input type="password" name="j_password" autocomplete="off"></td> 
        </tr> 
       </table> 
        <% 
         User user = (User) request.getSession().getAttribute("user"); 
         System.out.println("User: " + user); 
         if (request.getParameter("error") != null) { 
          System.out.println("Error: " + request.getParameter("error")); 
          %> 
           <div id="errorLogin">Invalid username or password</div> 
           <br/> 
           <div><span id="loginAttempt"><script>loginAttempts("<%=user%>");</script></span></div> 
          <% 
         } 
        %> 

       <input type="submit" value="Login"> 
      </form> 
     </div> 
        <% response.setHeader("Cache-Control", "no-cache"); // HTTP 1.1 
         response.setHeader("Cache-Control", "no-store"); 
         response.setHeader("Pragma", "no-cache"); // HTTP 1.0 
         response.setHeader("Expires", "0"); // Prevents cache at proxy server 
        %> 
    </body> 
</html> 

JavaScipt .js

var loginattempts = null; 
var temp; 

function loginAttempts(user) { 
    //var user = document.getElementById('user').value; 
    var div = document.getElementById('loginAttempt'); 
    var msg = "Warning: Login attempts remaining: "; 
    loginattempts = getCookie("login"); 

    if (loginattempts === "" || loginattempts === null) { 
     createCookie("login", 3, 5); 
     temp = getCookie("login"); 
     div.textContent = msg + temp.toString(); 
    } else if (loginattempts === "0" || loginattempts === 0) { 
     div.textContent = user + " has been locked out"; 
    } else { 
     temp = getCookie("login") - 1 ; 
     div.textContent = msg + temp.toString(); 
    } 

    debugger; 

} 

function getCookie(cname) { 
    var name = cname + "="; 
    var decodedCookie = decodeURIComponent(document.cookie); 
    var ca = decodedCookie.split(';'); 

    for(var i = 0; i <ca.length; i++) { 
     var c = ca[i]; 
     while (c.charAt(0) === ' ') { 
      c = c.substring(1); 
     } 
     if (c.indexOf(name) === 0) { 
      return c.substring(name.length, c.length); 
     } 
    } 
    return ""; 
} 

function createCookie(cname, cvalue, exdays) { 
    var d = new Date(); 
    d.setTime(d.getTime() + (exdays*24*60*60*1000)); 
    var expires = "expires=" + d.toUTCString(); 
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 
} 

server.xml Aussperrung:

<Realm className="org.apache.catalina.realm.LockOutRealm" failureCount="3" lockOutTime="900" cacheSize="1000" cacheRemovalWarningTime="3600"> 

Antwort

0

Ich habe dies selbst gelöst, ich bin mit Cookies, um die Informationen zu speichern.

Verwandte Themen