How do I warn the user that their web session is about to time out?
I've checked around for a solution but I don't seem to get any directed to asp.net mvc. Basically I'm looking for a solution where a user is notified a minute before the session expires.
The ideal solution wi开发者_Go百科ll be count down notification that will have an option to renew the session.
If the countdown timer expires without the user refreshing the page, I need to log them out.
Something like this:
public class YourController : Controller {
public ActionResult TheAction() {
ViewData["SessionTimeout"] = Request.Session.Timout;
ViewData["SessionWillExpireOn"] = DateTime.Now.AddMinutes(Request.Session.Timeout);
return View(info);
}
}
and this:
<span>Your session will expire: <%= ViewData["SessionWillExpireOn"].ToString() %></span>
<span id="countDown" style="display:none></span>
<script type="text/javascript">
var sessionTimout = <%= ViewData["SessionTimeout"].ToString(); %>;
var approximateStart = new Date();
var notifyAfter = new Date(approximateStart + (sessionTimout - 1)*60*1000);
function startCountDown() {
setTimout(function() {
var now = new Date();
document.getElementById('countDown').style.display = 'inline';
document.getElementById('countDown').innerHTML = "Countdown: " + now.getMinutes();
if (now >= notifyAfter)
alert('About to expire...');
}, 5000);
}
document.onload=startCountDown;
</script>
Wrote the View in notepad, so please check the syntax. I also don't remember exactly the DateTime stuff in JS.
Anyway you should see the idea.
精彩评论