Automatically logout when user is idle for sometime
Automatically logout when user is idle for sometime :
When working with corporate application, many a times we are given requirement that when user is logged in to the application and have left the application idle for certain amount of time, he/she should be automatically logged out to avoid leaking of application specific information or misuse of the application.This is very frequently asked feature in banking, finance and other information sensitive web application.
In this Post, we
shall learn very easy way to achieve automatic logout when user is idle for
sometime in the application.
To demonstrate this,
I have created a very simple web page. In real time scenario, we can enhance
this or add/remove whatever is necessary.
Creating a sample
automatic logout notification page
Below is the
<script> code. This should ideally be kept inside the
_Layout/Master/Template page so that this code executes in almost all pages of
the application.
In this code, we are
first referencing to the jQuery page.
On load of the page,
we are attaching click and keypress event on the "body" element of
the page and when these event fires, we are calling ResetThisSession()
function.
Next, we have
declared a variable named timeInSecondsAfterSessionOut that holds the value
defined in number of seconds the user should be automatically logged out.
Next, we have
declared a variable named secondTick, treat this as second needle of the watch
that will be incremented after every second.
After that we have
declared ResetThisSession() function that simply sets the secondTick value to
0.
<script
src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script>
$(function () {
$("body").on('click
keypress', function () {
ResetThisSession();
});
});
var timeInSecondsAfterSessionOut = 30;
var secondTick = 0;
function ResetThisSession() {
secondTick = 0;
}
function StartThisSessionTimer() {
secondTick++;
var timeLeft =
((timeInSecondsAfterSessionOut - secondTick) / 60).toFixed(0);
timeLeft = timeInSecondsAfterSessionOut
- secondTick;
$("#spanTimeLeft").html(timeLeft);
if (secondTick >
timeInSecondsAfterSessionOut) {
clearTimeout(tick);
window.location =
"/Logout.aspx";
return;
}
tick =
setTimeout("StartThisSessionTimer()", 1000);
}
StartThisSessionTimer();
</script>
Comments
Post a Comment