Я действительно хочу, чтобы мой пользователь поддержал сеанс незадолго до его истечения.
Вчера я задал вопрос " Как я могу проверить, является ли сеанс мертвым, а затем запроситьalert?"и кто-то ответил с помощью решения AJAX / JSON, которое каждые 30 секунд звонило на страницу ASP.Это не сработало, поскольку обращения к серверу поддерживали сессию в активном состоянии, поэтому она никогда не выходила из системы.
Я продолжал читать и натолкнулся на аналогичный вопрос [SO], где кто-то предложил использовать обратный отсчет JSэто побудило пользователя возобновить сеанс за 5 минут до истечения срока его действия.
Это то, что я сделал до сих пор, но:
- Функция
startMainTimer
делаетПохоже, я не получаю время, потому что я не получил предупреждение, когда таймер должен был срабатывать. - Функция
$('body').mousedown()
не работает должным образом.Это работает, но если пользователь щелкает ссылку, функция mousedown работает, но не переходит по ссылке после запуска функции.
Вот код:
<script>
$(document).ready(function() {
$.ajax({ // get session expiration value e.g. 60
type : 'GET',
url : '../getSessionValue.asp',
dataType : 'text',
success : function(data) {
if (data != '') {
var newSessionValue = data - 5
startMainTimer(newSessionValue * 60000); // deduct 5 minutes, convert to mSeconds & call startNewTimer()
}
}
});
$('body').mousedown( function() { // if user clicks anywhere on page call ajaxRenewSession() function
ajaxRenewSession();
});
$('#userButtonRenewSession').click( function() { // if user clicks continue browsing button
ajaxRenewSession();
});
});
function startMainTimer(newSessionValue,restart) {
if (restart == 'yes') {
clearInterval(interval);
}
var counter = 0;
var interval = setInterval(function() {
counter++;
if (counter == newSessionValue) {
alert("Your session is about to expire!");
clearInterval(interval);
}
}, 1000);
}
function ajaxRenewSession() { // AJAX the server to renew session, get session timeout value and then reset JS timer
$.ajax({
type : 'GET',
url : '../renewSession.asp',
dataType : 'text',
success : function(data) {
if (data != '') {
var newSessionValue = data - 5
startMainTimer(newSessionValue * 60000, 'yes');
}
}
});
}
</script>
МожетКто-нибудь помочь мне исправить эти проблемы?