Statt dies zu tun, mit einem einzigen Timer 15 Minuten ausgeführt wird, wie etwa das Intervall auf 1 Minute einstellen und im Fall einen Zähler runterzählen?
Dieser Zähler könnte leicht durch andere Ereignisse, z.B. AJAX-Aufrufe, Klick-Ereignisse usw., die in jQuery bv .delegate
oder .on
Methoden leicht ausgelöst werden können.
Wenn keine solchen Rücksetzungen auftreten, erreicht der Countdown 0 und Sie können die Umleitung ausführen.
var inactivityCountdown = 15;
intervalid = window.setInterval(function Redirect()
{
inactivityCountdown--;
if (inactivityCountdown<1) {
clearInterval(intervalid);
alert('Your session has been expired and system redirects to login page now.!\n\n');
window.location.href='../index.aspx';
}
}, 60*1000);
Sie können sehen, auf diese Weise ist es einfach, den Zähler inactivityCountdown
jederzeit vor es abläuft zurückgesetzt. Vergessen Sie nicht, das Intervall bei der Umleitung zu löschen.
Im folgenden Ausschnitt verwende ich 10 Sekunden statt Minuten für bessere Tests. Geben Sie etwas in das Textfeld ein oder klicken Sie auf die Schaltfläche, um den Countdown zurückzusetzen.
Sie erhalten die Nachricht und dann ein Logout Text, in dem Sie in der Lage über einen Link wieder einzuloggen sein werden (dies simuliert die Umleitung):
var initCountdownValue = 10;
var inactivityCountdown = initCountdownValue;
$(document).ready(function() {
$(document).delegate("#login", "click", function(e) {
location.reload();
});
function Logout() {
document.getElementById('mainpage').style.display = "none";
document.getElementById('loggedout').style.display = "";
// or window.location.href="/logout.aspx";
}
var intervalid = window.setInterval(function Redirect() {
inactivityCountdown--;
$("#counter").text(inactivityCountdown.toString());
if (inactivityCountdown < 1) {
clearInterval(intervalid);
Logout();
alert('Your session has been expired and system redirects to login page now.!');
}
}, 1 * 1000);
$(document).delegate(":input", "click change keydown", function() {
inactivityCountdown = initCountdownValue;
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<div id="mainpage" style="">
<input type="text"></input>
<input type="button" text="test"></input>
<div>
Counter:
<div id="counter"></div>
</div>
</div>
<div id="loggedout" style="display:none">
You are logged out. To login, click <a id="login" href="#">here</a>
</div>
Jedes Mal, wenn eine Seite ist check für eine Session-Variable, die die Zeit enthält, zu der zuletzt eine Seite navigiert wurde. Wenn es weniger als 15 Minuten ist, aktualisieren Sie diese Sitzungsvariable mit der aktuellen Zeit und ermöglichen Sie dem Benutzer, fortzufahren. Andernfalls nullen Sie die Sitzungsvariable und leiten Sie sie an die Startseite weiter. –