Лучший подход к обработке тайм-аутов сессий.
Я говорю, что есть 2 основных случая.
Один из них, когда пользователи вводят мало данных или не вводят данные, и просто читают отчетыили делать маленькие мысли мышкой.В этом случае нет простого способа сообщить ему, что сессия истекает.Если вы собираетесь проверить время, оставшееся до сеанса, вызывающего код, то вы автоматически обновите сеанс.Затем, если у вас есть таймер для обратного отсчета сеанса, то, возможно, пользователь открыл новую вкладку вашей сети, и срок сеанса истекает, но не в то время, когда у вас есть заметка с javascript, и пользователь получает неправильное сообщение.
Так что для меня, когда пользователь вводит мало данных или вообще не вводит данные, просто дайте сессии истечь, если он потеряет один клик, он сделает это позже.
Второй - когда пользователю нужночтобы ввести много данных, , которые могут занять некоторое время, например, длинный текст, чтобы написать и исправить это.В этом случае я использую описанную ниже технику, и мне не разрешают выходить из сеанса.
Как сохранить сеанс открытым, пока браузер.
Вот очень хороший и простой методЯ использую изображение, которое я перезагружаю до истечения времени ожидания сеанса с использованием JavaScript.
<img id="keepAliveIMG" width="1" height="1" src="/img/ui/spacer.gif?" />
<script language="javascript" type="text/javascript">
var myImg = document.getElementById("keepAliveIMG");
if (myImg){
window.setInterval(function(){
myImg.src = myImg.src.replace(/\?.*$/, '?' + Math.random());
}, 6000);
}
</script>
В третьем случае вы можете сделать это.Мы заботимся о том, чтобы сессия истекла только после обратной отправки.Когда пользователь вводит некоторые данные и возвращает сообщение, приложение перенаправляет его на страницу входа, и сообщение теряется.
В этом третьем случае вы можете захватить данные сообщения и сохранить их до повторного входа пользователя.Вы фиксируете данные поста на global.asax
на
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
Это функция, которая вызывается перед перенаправлением на страницу входа, и там вы видите, есть ли у вас данные поста и использование, необходимое для входа,вы сохраняете эти данные поста, эфир на новую страницу перенаправления, эфир на сервер (возможно, во время сеанса, может быть, во временной базе данных).
Теперь, когда пользователь снова входит в систему, вы снова перенаправляете его на последнююстраница с сохраненными данными поста, и пользователь продолжает работу как есть.
Единственный прием - создать среднюю страницу, которая отображает форму с последними опубликованными данными и автоматически перенаправляет вызов javascript.