In this approach, the user will be provided with a simple warning message, based on a pre-defined time interval.
Collapse | Copy Code
<script language="javascript" type="text/javascript">
var sessionTimeoutWarning =
"<%= System.Configuration.ConfigurationSettings.AppSettings
["SessionWarning"].ToString()%>";
var sessionTimeout = "<%= Session.Timeout %>";
var sTimeout = parseInt(sessionTimeoutWarning) * 60 * 1000;
setTimeout('SessionWarning()', sTimeout);
function SessionWarning() {
var message = "Your session will expire in another " +
(parseInt(sessionTimeout) - parseInt(sessionTimeoutWarning)) +
" mins! Please Save the data before the session expires";
alert(message);
}
</script>
sessionTimeoutWarning: is a predefined value in the application configuration. Say 18 minutes.
sessionTimeout: holds the session timeout interval. Say 20 minutes. In case the user does not do any post back on the page for about 18 minutes, he will be warned about the session expiry.
2. Provide a Simple Alert and Then Redirect the User to Home Page or Login Page
Collapse | Copy Code
<script language="javascript" type="text/javascript">
var sessionTimeoutWarning =
"<%= System.Configuration.ConfigurationSettings.AppSettings
["SessionWarning"].ToString()%>";
var sessionTimeout = "<%= Session.Timeout %>";
var timeOnPageLoad = new Date();
setTimeout('SessionWarning()', parseInt(sessionTimeoutWarning) * 60 * 1000);
setTimeout('RedirectToWelcomePage()',parseInt(sessionTimeout) * 60 * 1000);
function SessionWarning() {
var minutesForExpiry = (parseInt(sessionTimeout) -
parseInt(sessionTimeoutWarning));
var message = "Your session will expire in another " + minutesForExpiry +
" mins! Please Save the data before the session expires";
alert(message);
var currentTime = new Date();
var timeForExpiry = timeOnPageLoad.setMinutes(timeOnPageLoad.getMinutes()
+ parseInt(sessionTimeout));
if(Date.parse(currentTime) > timeForExpiry)
{
alert("Session expired. You will be redirected to welcome page");
window.location = "../Welcome.aspx";
}
}
function RedirectToWelcomePage(){
alert("Session expired. You will be redirected to welcome page");
window.location = "../Welcome.aspx";
}
</script>
In this approach, the user will be warned about the session timeout. If user does not save or do any post back, he would be redirected to the login or home page, once the session interval time expires.
3. Extend User Session
Collapse | Copy Code
<script language="javascript" type="text/javascript">
var sessionTimeoutWarning =
"<%= System.Configuration.ConfigurationSettings.AppSettings
["SessionWarning"].ToString()%>";
var sessionTimeout = "<%= Session.Timeout %>";
var timeOnPageLoad = new Date();
var sessionWarningTimer = null;
var redirectToWelcomePageTimer = null;
var sessionWarningTimer = setTimeout('SessionWarning()',
parseInt(sessionTimeoutWarning) * 60 * 1000);
var redirectToWelcomePageTimer = setTimeout('RedirectToWelcomePage()',
parseInt(sessionTimeout) * 60 * 1000);
function SessionWarning() {
var minutesForExpiry = (parseInt(sessionTimeout) -
parseInt(sessionTimeoutWarning));
var message = "Your session will expire in another " +
minutesForExpiry + " mins. Do you want to extend the session?";
answer = confirm(message);
if(answer)
{
var img = new Image(1, 1);
img.src = 'KeepAlive.aspx?date=' + escape(new Date());
if (redirectToWelcomePageTimer != null) {
clearTimeout(redirectToWelcomePageTimer);
}
timeOnPageLoad = new Date();
sessionWarningTimer = setTimeout('SessionWarning()',
parseInt(sessionTimeoutWarning) * 60 * 1000);
redirectToWelcomePageTimer = setTimeout
('RedirectToWelcomePage()',parseInt(sessionTimeout) * 60 * 1000);
}
var currentTime = new Date();
var timeForExpiry = timeOnPageLoad.setMinutes(timeOnPageLoad.getMinutes() +
parseInt(sessionTimeout));
if(Date.parse(currentTime) > timeForExpiry)
{
alert("Session expired. You will be redirected to welcome page");
window.location = "../Welcome.aspx";
}
}
function RedirectToWelcomePage(){
alert("Session expired. You will be redirected to welcome page");
window.location = "../Welcome.aspx";
}
</script>
In this approach, the user will be warned about the session timeout and provides the ability to extend user session. If the user confirms to extend the session, it gets extended. If user confirms after the session expiry timeout limit, even then the user will be logged out. Following lines of code are used to extend the user session. Where 'KeepAlive.aspx is a dummy page in the website.
Collapse | Copy Code
var img = new Image(1, 1);
img.src = 'KeepAlive.aspx?date=' + escape(new Date());
Note: In all the above scenarios, I am assuming SetTimeout method and session related variables will be reset whenever there is a post back. This may not work 100%, when there could be partial rendering and theSetTimeout method and session related variables may not be reset. All files are in the Samples folder.
from codeproject...
No comments:
Post a Comment
Thanks for your valuable comment...........
Md. Mominul Islam