2017-08-26 1 views
1

Ci-dessous est un code d'ouverture de session que j'ai mis en place avec html. Je voudrais définir un paramètre de délai d'attente pour lancer une fonction de déconnexion après x minutes d'inactivité. Est-ce possible? J'ai actuellement un bouton de déconnexion qui déclenche la déconnexion, donc peut-être avoir ce délai d'attente sélectionner cette fonction. Je vous remercie.Session TImeout après la connexion?

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form> 
 
     <fieldset> 
 
      <legend>Enter credentials</legend> 
 
      <p> 
 
       <label for="username">User name:</label> 
 
       <input type="text" id="username" name="username" /> 
 
      </p> 
 
      <p> 
 
       <label for="password">Password:</label> 
 
       <input type="password" id="password" name="password" /> 
 
      </p> 
 
     </fieldset> 
 
     <input type="submit" id="login-button" name="login-button" value="Log On" /> 
 
    </form>
<script src="scripts/jquery.min.js" type="text/javascript"></script> 
 
<script type="text/javascript"> 
 

 
$(document).ready(function() { 
 
     
 
    // Web Proxy request to fetch the configuration 
 
    ajaxWrapper({ url: 'Home/Configuration', dataType: 'xml', success: configSuccess }); 
 

 
    $('form').submit(function() { 
 
    var username = $('#username').val(), 
 
    password = $('#password').val(); 
 

 
    clearMessage(); 
 

 
    if (!username || !password) { 
 
     showMessage('Enter a username and a password'); 
 
     return false; 
 
    } 
 

 
    // Ensure the user name is correct... 
 
    // If the username has the domain string at position 0, then 
 
    // the username is correct and just use it as normal, but if 
 
    // not, username needs to have the domain prepended. 
 
    // Because of the backslashes in the strings, they need to be 
 
    // escaped with "\\" 
 
    username = username.indexOf("domain\\") === 0 ? username : "domain\\" + username; 
 

 
    // Web Proxy request to log the user on 
 
    ajaxWrapper({ 
 
     url: 'PostCredentialsAuth/Login', 
 
     dataType: 'xml', 
 
     success: loginSuccess, 
 
     error: loginError, 
 
     data: { username: username, password: password } 
 
    }); 
 

 
    return false; 
 
    }); 
 

 
}); 
 

 
</script>

est le code ci-dessous j'ai ajouté à la section après la forme de logonsuccess est sélectionné.

function loginSuccess(data) { 
 
     var $loginXml = $(data), 
 
      result = $loginXml.find('Result').text(); 
 

 
     if (result == 'success') { 
 
      $('form').hide(); 
 
      $('#log-off').show(); 
 
\t \t \t 
 
\t \t // Set timeout variables. 
 
var timoutWarning = 60000; // Display warning in 14 Mins. 
 
var timoutNow = 30000; // Warning has been shown, give the user 1 minute to interact 
 
var logoutUrl = '($configXml.find('authManager').attr('logoffURL'));'; // URL to logout page. 
 

 
var warningTimer; 
 
var timeoutTimer; 
 

 
// Start warning timer. 
 
function StartWarningTimer() { 
 
    warningTimer = setTimeout("IdleWarning()", timoutWarning); 
 
} 
 

 
// Reset timers. 
 
function ResetTimeOutTimer() { 
 
    clearTimeout(timeoutTimer); 
 
    StartWarningTimer(); 
 
    $("#timeout").dialog('close'); 
 
} 
 

 
// Show idle timeout warning dialog. 
 
function IdleWarning() { 
 
    clearTimeout(warningTimer); 
 
    timeoutTimer = setTimeout("IdleTimeout()", timoutNow); 
 
    $("#timeout").dialog({ 
 
     modal: true 
 
    }); 
 
    // Add code in the #timeout element to call ResetTimeOutTimer() if 
 
    // the "Stay Logged In" button is clicked 
 
} 
 

 
// Logout the user. 
 
function IdleTimeout() { 
 
    window.location = logoutUrl; 
 
}

Et ci-dessous est le bouton Log Off qui apparaît où un utilisateur peut se connecter manuellement.

 $('#log-off').click(function() { 
 
      // Web Proxy request to log the user off 
 
      url = ($configXml.find('authManager').attr('logoffURL')); 
 
      ajaxWrapper({ url: url, dataType: 'text', success: logoffSuccess }); 
 
      return false; 
 
     }); 
 
    });

+0

Vous pouvez consulter le lien [ici] (https://stackoverflow.com/questions/667555/detecting-idle-time-in-javascript-elegantly) pour détecter le temps d'inactivité dans JS. –

+0

Est-ce que je mettrais ce code après mon succès d'ouverture de session, donc il le surveille réellement seulement après que quelqu'un s'est connecté avec succès? –

Répondre

1

Votre code ne remet pas la fonction incativityTime. Appelez la fonction sur la fenêtre onload (ou jquery onReady) comme window.onload = function() { inactivityTime() };

<html> 
<body> 
    <script> 
     window.onload = function() { inactivityTime() }; 

     var inactivityTime = function() 
     { 
      var t; 
      window.onload = resetTimer; 
      // DOM Events 
      document.onmousemove = resetTimer; 
      document.onkeypress = resetTimer; 

      function logout() { 
      alert("You are now logged out.") 
      //location.href = 'logout.php' 
      } 

      function resetTimer() { 
       clearTimeout(t); 
       t = setTimeout(logout, 3000) 
       // 1000 milisec = 1 sec 
      } 
     } 
    </script> 
</body> 
</html> 
+0

J'ai donc ajouté cela après mon succès de connexion, mais cela n'a pas fonctionné. Ci-dessous est où je l'ai placé. –

+0

S'il vous plaît se référer à ma réponse et l'exemple de code ci-dessus. –

0

je l'ai ajouté sans succès. Voici à quoi ressemble le code de réussite de la connexion.

function loginSuccess(data) { 
    var $loginXml = $(data), 
     result = $loginXml.find('Result').text(); 

    if (result == 'success') { 
     $('form').hide(); 
     $('#log-off').show(); 

     // Web Proxy request to enumerate the resources available to the user 
     url = $configXml.find('resourcesProxy').attr('listURL'); 
     ajaxWrapper({ url: url, success: listResourcesSuccess }); 
    } else { 
     showMessage('Login failed - try again'); 
    } 

    var inactivityTime = function() { 
    var t; 
    window.onload = resetTimer; 
    // DOM Events 
    document.onmousemove = resetTimer; 
    document.onkeypress = resetTimer; 

    function logout() { 
    alert("You are now logged out.") 
    //location.href = 'logout.php' 
    } 

    function resetTimer() { 
     clearTimeout(t); 
     t = setTimeout(logout, 3000) 
     // 1000 milisec = 1 sec 
    } 
}; 
}