he system should monitor user activity and it should start the countdown only if it sees that the user is not doing anything say for 3 mins or 5 mins
And when the countdown is running lets say for 1 hour and user clicks inside the page and does some action, then the countdown should reset to 2 hour and it should not start the countdown until it again detects user inaction for 3 or 5 mins
If there is user inaction for 3 or 5 mins and the countdown starts and runs till 1:58 mins and still there is no user action, then the popup with 2 min countdown should appear with "Extend Session" button
With “Extend Session” button click the counter should be reset to 2 hours and again it should not start the countdown until it detects user inaction for 3 or 5 mins
What I have tried:
Session Idle: seconds.
Your Session will expire in seconds.
Do you want to reset?
$(function () {
$("#dialog").dialog({
autoOpen: false,
modal: true,
title: "Session Expiring",
buttons: {
Ok: function () {
ResetSession();
},
Close: function () {
$(this).dialog('close');
}
}
});
});
function SessionExpireAlert(timeout) {
var seconds = timeout / 1000;
$("#secondsIdle").html(seconds);
$("#seconds").html(seconds);
setInterval(function () {
seconds--;
$("#secondsIdle").html(seconds);
$("#seconds").html(seconds);
}, 1000);
setTimeout(function () {
//Show Popup before 20 seconds of timeout.
$('#dialog').dialog('open');
}, timeout - 30 * 1000);
setTimeout(function () {
window.location = "User/SessionExpired";
}, timeout);
};
function ResetSession() {
//Redirect to refresh Session.
window.location = window.location.href;
};
---------------------------------------------------------------------------------
CS Page-
Response.Cache.SetCacheability(HttpCacheability.NoCache);
if (!this.IsPostBack)
{
Session["Reset"] = true;
Configuration config = WebConfigurationManager.OpenWebConfiguration("~/Web.Config");
SessionStateSection section = (SessionStateSection)config.GetSection("system.web/sessionState");
int timeout = (int)section.Timeout.TotalMinutes * 1000 * 60;
ClientScript.RegisterStartupScript(this.GetType(), "SessionAlert", "SessionExpireAlert(" + timeout + ");", true);
}