Как предупредить пользователя о том, что время его веб-сеанса истекло? - PullRequest
3 голосов
/ 16 ноября 2009

Я проверил решение, но, похоже, не обращаюсь к asp.net mvc. В основном я ищу решение, где пользователь получает уведомление за минуту до истечения сеанса.

Идеальным решением будет уведомление с обратным отсчетом, в котором будет возможность возобновить сеанс.

Если таймер обратного отсчета истекает без обновления страницы пользователем, мне нужно выйти из системы.

1 Ответ

4 голосов
/ 16 ноября 2009

Примерно так:

public class YourController : Controller {
    public ActionResult TheAction() {
        ViewData["SessionTimeout"] = Request.Session.Timout;
        ViewData["SessionWillExpireOn"] = DateTime.Now.AddMinutes(Request.Session.Timeout);
        return View(info);
    }
}

и это:

<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>

Написал просмотр в блокноте, поэтому, пожалуйста, проверьте синтаксис. Я также точно не помню материал DateTime в JS.

В любом случае, вы должны увидеть идею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...